2016-01-25 25 views
1

這是設置。擁有一個Ruby off Rails API應用程序設置。如何獲得只有1個遷移文件的「ActiveRecord :: DuplicateMigrationNameError」?

它通過git子模塊獨立地引入「數據庫創建應用程序」。有一個「db/migrate」文件夾包含一個遷移文件和一個「db/structure.sql」文件。數據庫創建項目本質上是一個精簡的Rails項目 - 我們使用Rails,因爲我們需要rake任務來讓我們輕鬆遷移。

structure.sql文件基本上重新創建了我們的舊數據庫模式(由於有多個需要訪問數據庫的應用程序,並希望儘可能保持數據庫的一致性,我們決定將數據庫代碼保存在單獨的repo中)。

如果我做rake db:create我被告知存在app_developmentapp_test。我已經手動刪除了兩者的schema_migrations和schema_info表。事實上,app_test是空的,並且不包含表格。

如果我運行耙分貝:遷移,我得到告訴:

ActiveRecord::DuplicateMigrationNameError: 

Multiple migrations have the name YourMigrationToTableBlahBlah 

這怎麼可能?我如何解決這個錯誤,所以我可以遷移?

有一次我做了一個git commit,重命名db/migration中1遷移文件中的列,但我刪除了app_development和app_test以及schema_migrations表中的表,所以Rails rake任務不應該是抱怨這件事。

編輯:

有一件事我注意到的是的bundle exec rake db:migrate運行過程中是相同的遷移文件夾路徑(例如,「DB /遷移」)被添加到ActiveRecord::Tasks::DatabaseTasks.migrations_paths,但我不知道爲什麼

回答

0

您刪除了schema_migrations中的某些內容,但您沒有運行它們,並且數據庫仍然存在於數據庫中。複製你的schema_migrations和你的數據,然後嘗試運行「rake db:schema:load」。這個cmd可以幫助你重建數據庫,並刪除數據

+0

我丟棄了數據庫並使用postgres語句重新創建它,它仍然給出了相同的錯誤... – Nona

+0

「YourMigrationToTableBlahBlah」中有錯誤,也許你在「YourMigrationToTableBlahBlah」中再次創建列或表格 – Cary