2011-12-21 118 views
5

我是新來的回報率,我不斷收到此錯誤信息:

$ rake db:migrate 
== CreateUsers: migrating ==================================================== 
-- create_table(:users) 
rake aborted! 
An error has occurred, this and all later migrations canceled: 

SQLite3::SQLException: table "users" already exists: CREATE TABLE "users" ("id" 
INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "email" varchar 
(255), "created_at" datetime, "updated_at" datetime) 

Tasks: TOP => db:migrate 
(See full trace by running task with --trace) 

我一直在尋找3天的解決方案,但我似乎無法找到任何適合我的東西。

非常感謝您的幫助:) PS - 我正在使用Windows。

回答

7

table "users" already exists似乎是問題所在。您是否嘗試過使用SQLITE admin tool來手動從數據庫中刪除該表?

或者您可以在遷移腳本中包含刪除表(應在您的db/migrate文件夾中將其稱爲create_users.rb)。裏面def up插入drop_table :users

 def up 
     drop_table :users 

     create_table :users do |t| 
     t.string :name 
     #... 

     t.timestamps 
     end 

哦,我從我的回報率時,該表名「用戶」可以在以後導致問題記得。可能與此有關。

+0

謝謝皮特!這工作! – Michele 2011-12-21 12:50:42

+0

謝謝。我也解決了這個問題。通過刪除我的數據庫來解決 – 2012-02-13 04:55:33

1

由於該表已存在,因此需要在執行遷移之前將其刪除/刪除。

簡單,GUI的方法是使用SQLite數據庫瀏覽器(http://sourceforge.net/projects/sqlitebrowser/)。

使用Table-X圖標單擊按鈕。選擇用戶表單擊刪除。

然後運行rake db:migrate

巴達熱潮Bada堆

5

不知道,如果你是以下的邁克爾·哈特爾對RoR的教程。

但有人說,有教程http://archive.railsforum.com/viewtopic.php?id=44944

rake db:drop:all < ----------的步驟將消滅一切然後再次運行rake db:migrate應該解決這個問題的一個問題。

好運

+0

我必須在'rake db:drop:all'之後運行'rake db:create',然後才能運行'rake db:migrate'。 – 2016-05-18 01:25:35