我寫了下面的遷移:遷移創建表提出Mysql2 ::錯誤:表不存在
class CreateTableSomeTable < ActiveRecord::Migration[5.1]
def change
create_table :some_tables do |t|
t.references :user, foreign_key: true
t.references :author, references: :user, foreign_key: true
t.text :summary
end
end
end
這是創建數據庫表中的基本遷移。但是:當我運行rails db:migrate
一個非常奇怪的錯誤信息中止遷移:
Mysql2::Error: Table 'my_database.some_tables' doesn't exist: SHOW FULL FIELDS FROM 'some_tables'
這是因爲如果錯誤是說,因爲該表確實存在不能創建表,這沒有任何意義。
事情我已經看過並嘗試:
- 回顧這似乎罰款的database.yml。什麼都沒有改變,我最近運行其他遷移就好了(雖然創建數據庫表沒有遷移)
- 跑
bundle
,以確保所有的寶石都安裝 - 刪除
schema.rb
文件,重新創建與數據從數據庫的另一個副本,我運行rake db:schema:dump
重新創建schema.rb
文件。我試圖再次運行遷移,仍然有相同的錯誤。
我使用rails 5.1.1
以及mysql2 0.4.6
我如何能得到任何提示,在遷移到運行?
它看起來像是你的鴨子在一排,所以這可能是一個多餘的問題,但是:你是否證實這是特定的遷移導致的問題,例如,通過將調試代碼放入遷移中,或者使用環境變量導致只運行一個遷移?在運行遷移時,日誌文件中顯示的內容與此表相關? –
嘗試運行'rake db:migrate:status'來查看已經應用到數據庫的遷移。也許你發現你連接到不同的模式,或者你發現失敗的遷移不是你認爲導致失敗的遷移。 – Bustikiller