我在我的Rails應用程序中創建了一個名爲Categorie的模型。 由於出錯,我需要刪除模型。Rails:耙由於已經存在的表而中止,但無法刪除它
我跑
rails d model Categorie
可以除去我現有的模型。
我忘了在那一刻運行rails g migration DropTable
。
但後來,我需要重新創建Categorie模型,所以我跑:
rails g model Categorie name:string
可是當我要運行rake db:migrate
我得到以下錯誤:
rake aborted!
StandardError: An error has occurred, all later migrations canceled:
Mysql2::Error: Table 'categories' already exists: CREATE TABLE `categories` ...
之後,我試圖刪除表重做所有的過程,但它不工作,表仍然在schema.rb
我知道不建議手動從這就是爲什麼我想知道是否有人會知道這件事的文件。我知道這是一個白癡的錯誤,但現在我不知道如何解決這個問題。
下面是我試圖刪除該表:
rails g migration DropCategories
def change
drop_table :categories
end
rake db:migrate
我認爲這是與刪除表,因爲這裏是輸出端的問題,當我遷移數據庫:
== 20170509123739 CreateCategories: migrating =================================
-- create_table(:categories)
rake aborted!
StandardError: An error has occurred, all later migrations canceled:
Mysql2::Error: Table 'categories' already exists: CREATE TABLE `categories` (`id` int(11) auto_increment PRIMARY KEY, `name` varchar(255), `created_at` datetime NOT NULL, `updated_at` datetime NOT NULL) ENGINE=InnoDB
Rails似乎創建一個表,而不是刪除我想要的。
你是怎樣嘗試刪除該表?錯誤消息正在發生,因爲該表仍在MySQL數據庫中,而不是因爲它在'schema.rb'中。如果您使用MySQL客戶端刪除表,那麼無論「schema.rb」中的內容如何,您的遷移都應該成功。 – Brian
@Brian我做了rails g遷移DropCategories,然後我用drop_table修改了遷移文件:類別 – justinedps26
您可以嘗試回滾(rake db:rollback),然後更改遷移文件,以便只有一個文件創建表。 N.B:回滾將模式回滾到以前的版本。 –