2011-01-24 184 views
0

我正在關注RailsTutorial.org教程,第7.3節,並嘗試使用rake將數據庫遷移添加到現有數據庫的密碼列。看來正在發生的事情是,rails重新運行先前的遷移文件並嘗試添加表Users(已存在),而不是最新的遷移文件並添加密碼列。任何幫助,將不勝感激!Rails DB遷移錯誤,Rails重新運行以前的遷移?

這裏是我跑生成遷移文件中的代碼:

$ rails generate migration add_password_to_users encrypted_password:string 

然後我跑耙分貝:遷移並得到了以下錯誤:

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) 
+0

似乎你做了一個以前的遷移創建用戶表的副本。看看你的數據庫/遷移文件夾 – apneadiving 2011-01-24 17:48:47

+0

應該有兩個遷移包含:create_table:users – apneadiving 2011-01-24 17:54:21

回答

0

看起來有一個其他遷移文件存在問題 - 我將該文件移出migrate文件夾,然後重新運行rake並運行。

1

Rails會運行,其數量的任何遷移不在相關數據庫的schema_migrations表中。因此,如果它沒有用於創建用戶表的遷移編號,它將運行該遷移,如果該表恰好已經存在,則會發生這種遷移。

我不熟悉你正在談論的教程 - 你能帶我看看你已經完成了你的遷移嗎?