[英]Mysql2::Error: Table already exists
我需要運行一些遷移。 但是,當我rake db:migrate
時,會發生以下錯誤。
Mysql2::Error: Table already exists
。
由於表已經存在,因此發生4-5次,但是schema_migrations
表似乎與應用程序不同步。
我的數據庫中有一個生產轉儲,我不想刪除表並丟失數據。 我目前正在做的是修改schema_migrations
表並在其中手動添加這些沖突的遷移號,然后再次運行rake db:migrate
直到錯誤消失,然后我的新遷移開始運行。 但這似乎不對。
除了我提到的內容(不涉及刪除數據庫或丟失數據)之外,還有其他可行的解決方案嗎?
對於此類遷移,您可以使用以下方法在遷移中創建表之前檢查table_exists
class Migrationclassname < ActiveRecord::Migration
def up
if table_exists?(:table_name)
# Some changed if required
else
# create table
end
end
def down
end
end
由於表已經存在,因此發生4-5次,但是schema_migrations表似乎與應用程序不同步。
您可以運行rake db:schema:dump
以使您的數據庫具有架構文件中所述的形式。 並且,如果上述表未顯示在模式文件中,那么您可以肯定地通過運行rake db:migrate
來創建它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.