簡體   English   中英

Mysql2 :: Error:表已存在

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM