2016-11-05 2 views
1

Каждый раз, когда я совершаю код с миграцией, по какой-то причине я получаю кучу изменений схемы, которые я не писал, которые были получены из предыдущих PR.Непреднамеренная схема изменяется каждый раз, когда я фиксирую

Например, я напишу о миграции для добавления столбца в User ... но после выполнения миграции файл схемы будет содержать 10 изменений от предыдущего старого кода, который вообще не находится в текущей ветке.

Как исправить это?

ответ

0

Есть две возможности:

  1. Вы не удалили код для предыдущих миграций, которые вы пытаетесь пренебречь из файла schema.rb.

  2. Вы очень новичок в рельсах, и вы попытались удалить поля из файла schema.rb вручную, думая, что он будет синхронизироваться с вашей базой данных.

В любом случае: удалить все файлы миграция не требуется, если вы еще не сделали, то просто откатить базы данных в исходную пустую версию с помощью команды:

rake db:rollback VERSION=0

Тогда: Теперь, когда у вас есть нужные файлы миграции, миграции на ваш Databse с помощью команды:

rake db:migrate

Это должно дать вам точный schema.rb файлу

2

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

Вещь, которую вы делаете, устраняет разницу между кодом и датой.

Решение:

заказ к вашей старой ветви и откатить изменения схемы, запустив rake db:migrate:down VERSION=20161106xxxxxx.

или

  1. В текущей ветви, запустить rake db:rollback STEP=n изменения схемы отката сделана текущей ветвью
  2. Затем фотографии со старой ветвью выполнить rake db:rollback STEP=m откатить изменения схемы по старой ветви.
  3. Оформить возврат к текущей ветке и запустить rake db:migrate, и вы не увидите дополнительных изменений в файле схемы.

ссылка: