Восстановить миграцию после ручного удаления ее из базы данных. - PullRequest
1 голос
/ 11 марта 2012

У меня есть миграция с именем "20120311145341_create_resource1s.rb". Я случайно удалил эту таблицу в базе данных. Я запустил "rake db: migrate", но он не восстанавливает эту таблицу. Как его восстановить?

1 Ответ

7 голосов
/ 12 марта 2012

Вы не можете запустить db:migrate снова, потому что я думаю, что вы уже в последней миграции.

a) Если миграция, которую вы пытаетесь воссоздать, является самой последней, вы можете выполнить следующее, чтобы откатить ее, а затем снова запустить.

rake db:rollback
rake db:migrate

b) Если это не последняя миграция, необходимо перечислить файлы в каталоге db/migrate, аннотировать версию предыдущей миграции в 20120311145341_create_resource1s.rb и затем выполнить:

rake db:migrate VERSION=20120309101821 (измените версию на нужную для вас)
rake db:migrate

Обратите внимание , если вы получаете ошибку, подобную этой Mysql2::Error: Unknown table 'xxx': DROP TABLE 'xxx' вы можете обойти его, проверив наличие таблицы в методе миграции вниз:

  def self.down
    drop_table :xxx if ActiveRecord::Base.connection.table_exists? 'xxx'
  end

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...