2017-04-23 72 views
1

我上傳了我的本地文件到AWS,並且我做了rake db:migrate RAILS_ENV = production, 但它顯示錯誤...它正在處理我的本地環境,但它是不在生產上工作。rake db:migrate RAILS_ENV =生產不起作用

ActiveRecord::SchemaMigration Load (0.2ms) SELECT `schema_migrations`.* FROM `schema_migrations` 
Migrating to DeleteTagCategories (20170422082951) 
== 20170422082951 DeleteTagCategories: migrating ============================== 
-- drop_table(:tag_categories) 
    (0.2ms) DROP TABLE `tag_categories` 
rake aborted! 
StandardError: An error has occurred, all later migrations canceled: 

Mysql2::Error: Unknown table 'tag_categories': DROP TABLE `tag_categories` 

解決此錯誤的最佳方法是什麼?

+0

檢查你的遷移,似乎你有一個在生產中缺少的開發表('tag_categories')。 – Gerry

+0

您應該使用'rake db:schema:load RAILS_ENV = production' – Iceman

+0

感謝您的幫助!是的,這是正確的。我開發了一個表(tag_categories),並且在開發之前我已經刪除了它。我應該怎麼做才能解決這個問題? – Dan

回答

1

您應該知道db:schema:load會刪除現有數據,因此如果您有任何非種子數據要保留,您可能不想在生產環境中運行該數據。

由於表(tag_categories)在它被推送到生產之前被刪除,所以我只是手動刪除表並且沒有使用遷移。

因此,基本上只是刪除刪除tag_categories的遷移,因爲該表只存在於本地計算機上。

當我在做Rails開發時,我通常只編輯現有的遷移,並在可能的地方進行手動更改,而不是爲每個更改創建新的遷移。一旦我開始生產(或者與團隊一起工作時進行源代碼管理),我將不再對現有的遷移進行其他更改。這減少了不必要的遷移次數,可以快速加起來。