2017-08-26 99 views
0

我有一個控制器,我誤稱並最終通過rails destroy controller將它從命令行中刪除。我最終重新創建了一切,但每次運行rails db:migrate時出現以下錯誤。rails db:遷移不起作用

SQLite3::SQLException: table "advertisements" already exists: CREATE TABLE "advertisements" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "title" varchar, "copy" text, "price" integer, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL) 

我在做什麼,我一直在處理這一個微小的失誤在過去的兩天,每次我似乎得到正確的軌道上一個,沒錯方面的損失。如果有人能告訴我爲什麼這個錯誤正在發生,我能做什麼,我會非常感激。在此先感謝

+0

名/文件夾,並遷移了一些錯誤之前失敗了嗎?這可能是由於部分數據庫:遷移 - 由於錯誤,它最終創建了表......並且一旦您修復了遷移文件,它將無法再執行一次。 – kiddorails

+0

它是您的本地環境,因此只需手動刪除表並嘗試運行遷移。 –

回答

1

這個問題是因爲你的'destroy_controller'命令不會刪除表'廣告'。有兩種解決方案:

  1. 如果您在表中沒有任何更改,那麼您不需要重新創建該表。只需註釋您正在創建表格廣告表的遷移。

  2. 如果您真的想重新創建表格,然後在創建表格之前在您的遷移中添加drop_table :advertisements,這將刪除您的現有表格,然後繼續遷移。

您可以在數據庫遷移/任何機會遷移與像「xxxxx_create_advertisements.rb」

1

您應該添加刪除通告表的遷移。

+0

這比評論比回答更好。 –

2

看看db/migrate目錄。它可能是蜜蜂,你有兩個xxxxx_create_advertisements.rb文件(其中xxxxxx是一堆數字,更準確地說,這個遷移創建時的時間戳)?

如果是這樣,那麼刪除其中的一個(如果兩者具有相同的列定義,那麼哪一個並不重要 - 除非您有外鍵關聯)。

然後再試一次。