Проблема с Drop_table, предотвращающая rake db:migrate

Я искал способ удалить таблицу в Rails и начать все заново, и наткнулся на этот ответ: Миграция БД Rails - Как удалить таблицу?

Однако, когда я запустил 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) 

Спасибо! (И если мне нужно предоставить больше кода, дайте мне знать.)


person tvalent2    schedule 25.07.2011    source источник


Ответы (1)


Вы должны удалить свою старую таблицу прямо перед созданием новой версии:

def self.up
    drop_table :examples
    create_table :examples do |t|
        #...
    end
end

И поскольку вы не можете отменить это drop_table, вы можете вызвать исключение при откате:

def self.down
    raise ActiveRecord::IrreversibleMigration
end

Или, может быть, вы просто хотите сохранить текущий self.down.

person mu is too short    schedule 25.07.2011