我有兩臺機器......一臺開發機器和一臺生產機器。當我第一次將我的Rails應用程序帶到生產服務器上時,我沒有任何問題。我只需通過運行rake db導入schema.rb:schema:load RAILS_ENV = production。一切都好。爲什麼Rake會拋出這個Rails遷移錯誤?
因此,在我的開發機器上,我做了一些更改和另一次遷移,然後將新應用程序複製到生產計算機上。然後我嘗試通過運行rake db來更新數據庫:migrate RAILS_ENV = production。我收到以下錯誤: 「數據庫中已經有一個名爲'schema_migrations'的對象。」
我在想我自己,雅沒有開玩笑耙......你創造了它!我在耙子上跑過痕跡,好像耙子認爲這是它第一次跑步。但是,通過分析我的開發計算機和生產計算機上的'schema_migrations'表,可以看到一個遷移有差異,即我想要遷移的遷移。
我也試着明確定義版本號,但這也不起作用。
關於如何讓我的生產服務器保持最新的任何想法?
更新:
讓我說開始,我不能只是「降」的數據庫。這是一個已經有超過10萬條記錄的生產服務器。如果將來出現類似問題會發生什麼?我每次發生數據庫問題時都會丟掉表格?這次可能會起作用,但對於每個數據庫問題來說,它似乎都不是一個實用的長期解決方案。我懷疑我現在遇到的問題對我來說是獨一無二的。
聽起來像'schema_info'表和'schema_migrations'表是相同的。在我的設置中,我只有'schema_migrations'。如前所述,生產服務器上的'schema_migrations'表與開發計算機之間的差異只是一個記錄。也就是說,包含我想要遷移的更改版本號的記錄。
從我讀過的'Simply Rails 2'一書中,它指出,當第一次移動到生產服務器時,不應運行rake db:migrate,而應該運行rake:db:schema:load。
如果有關係,我使用的是Rails版本2.1。
是的,schema_migrations表是您的密鑰,它可能不在那裏或者沒有填充或生產服務器上的東西 – 2008-10-25 04:36:17