Проблема drop_table предотвращение Rake DB: мигрировать
-
25-10-2019 - |
Вопрос
Я искал способ сбросить стол в рельсах, начать все сначала и наткнулся на этот ответ: Миграция Rails DB - Как бросить стол?
Однако, когда я побежал drop_table :examples
Я получил следующую ошибку:
-bash: drop_table: command not found
Вот мой create_examples
мигрировать файл:
def self.down
drop_table :examples
end
Кто -нибудь может помочь мне исправить это и дать мне представление о том, что я делаю не так? Мне нужно исправить это, потому что эта конкретная мигрирование не позволяет делать rake db:migrate
, создание следующей ошибки:
== CreateExamples: migrating ====================================================
-- create_table(:examples)
rake aborted!
An error has occurred, this and all later migrations canceled:
SQLite3::SQLException: table "examples" already exists: CREATE TABLE "examples" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "content" varchar(255), "user_id" integer, "created_at" datetime, "updated_at" datetime)
Спасибо! (И если мне нужно предоставить больше кода, дайте мне знать.)
Решение
Вы должны сбросить свой старый стол прямо перед созданием новой версии:
def self.up
drop_table :examples
create_table :examples do |t|
#...
end
end
И так как вы не можете изменить это drop_table
, вы можете поднять исключение в отказе:
def self.down
raise ActiveRecord::IrreversibleMigration
end
Или, может быть, вы просто хотите сохранить свой текущий self.down
.