Drop_table проблема, препятствующая рейку db: migrate - PullRequest
2 голосов
/ 25 июля 2011

Я искал способ отбросить таблицу в 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) 

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

1 Ответ

7 голосов
/ 25 июля 2011

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

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

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

def self.down
    raise ActiveRecord::IrreversibleMigration
end

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

...