Я хочу удалить / удалить файл миграции. Как я могу это сделать? Я знаю, что здесь есть похожие вопросы, но в качестве обновления, есть ли лучший способ, чем выполнение сценария / уничтожения?
Кроме того, следует ли мне сделать db:reset
или db:drop
удалить / удалить миграцию?
ruby-on-rails
ruby-on-rails-3
file-io
alvincrespo
источник
источник
self.down
метод, определенный при миграции, для «понижения» вашей базы данных.rake db:migrate:status
покажет вам идентификатор отсутствующего файла, который вы можете использовать для его воссоздания. Как только он вернется, вы сможете следовать совету этого ответа до победы.db:migrate:status
спасает жизнь!Другой способ удалить миграцию:
Используйте его до
rake db:migrate
выполнения, потому что изменения в базе данных останутся навсегда :) - или удалите изменения вручнуюисточник
Выполните следующие команды из домашнего каталога приложения:
rake db:migrate:down VERSION="20140311142212"
(здесь версия - это временная метка, добавленная рельсами при создании миграции. Это действие вернет изменения БД из-за этой миграции)Run "rails destroy migration migration_name"
(имя_играции - это то, что было выбрано при создании миграции. Удалите отметку времени Чтобы получить ее, из имени файла миграции)источник
rails d migration migration_name
Вы также можете запустить миграцию вниз следующим образом:
Обратитесь к руководству Ruby on Rails по миграции для получения дополнительной информации.
источник
Мы можем использовать,
Что удалит миграцию.
источник
Иногда я обнаруживал, что удаляю файл миграции, а затем удаляю соответствующую запись в таблице schema_migrations из базы данных. Не очень красиво, но работает.
источник
Это также работает в Rails 5.
Если миграция была самой последней, вы можете удалить столбцы базы данных, добавленные миграцией, выполнив:
затем удалите сам файл миграции, запустив:
источник
Посмотрите на 4.1 Откат назад
http://guides.rubyonrails.org/migrations.html
$ rake db: откат
источник
Ни один из этих ответов не соответствует моей проблеме, поскольку миграция, которую я хотел удалить, отсутствовала: я создал и запустил миграцию в какой-то другой ветке, которая затем была отброшена. Проблема в том, что когда выполняется миграция, rails добавляет версию в
schema_migrations
таблицу в базе данных. Поэтому, даже если он не указан в вашей структуре или схеме базы данных, rails ищет его. Вы можете выявить эти потерянные миграции, запустив:rails db:migrate:status
Обратите внимание на версии отсутствующих миграций и перейдите в консоль db:
rails dbconsole
Теперь удалите версии из таблицы миграции вручную:
delete from schema_migrations where version='<version>';
Теперь ты должен быть в порядке.
источник
У меня была такая же проблема:
Это исправило это для меня
источник
Боковое примечание: Начиная с рельсов 5.0.0
rake
было изменено наrails
Поэтому выполните следующие действия.rails db: migrate VERSION = 0
источник