2012-07-24 3 views
0

В чем разница междуВ чем разница между порождающей-Миграцией-дб и порождающим-миграций-моделей

symfony doctrine:generate-migrations-db 

и

symfony doctrine:generate-migrations-models 

Я не могу заметить разницу: Я пробовал с таблицами IN DB, NO schema.yml и NO моделей, обе они не влияют. Никаких миграций не генерируется.

Я пробовал с таблицами IN DB, GENERATED schema.yml и NO моделей, оба они не имеют никакого эффекта. Никаких миграций не генерируется.

И, наконец, я пробовал использовать таблицы IN DB, GENERATED schema.yml и GENERATED, теперь оба они генерируют одни и те же классы миграции: |.

Не может понять разницу. Или, по крайней мере, как лучше всего начать использовать миграцию, учитывая все сценарии: наличие моделей, но нет БД и наличие БД, но нет моделей.

Спасибо.

ответ

2

Учитывая существующую базу данных с 1+ таблиц, работает

./symfony doctrine:generate-migrations-db 

приведет к миграции файлов создается для каждой таблицы. Кроме того, данный каталог, как /lib/model/doctrine наполненной уже существующих моделей классов, работает

./symfony doctrine:generate-migrations-models 

приведет migraiton файлы создаются для каждой модели.

С таблицами в базе данных, с или без schema.yml содержания, и без каких-либо моделей в lib/model/doctrine, вам просто необходимо убедиться, что вы database.yml файл имеет учетные данные для правильного подключения к базе данных.

Как только вы выясните проблему с файлами переноса, которые не генерируются, я бы хотел начать с миграции.

  1. Сформировать свежую схему из существующей базы данных с ./symfony doctrine:build-schema
  2. вручную очистить файл схемы и повторно установить ваши отношения, вы уже получили существующие в вашей модели файлов (если таковые имеются).
  3. Reconfigure config/databases.yml, чтобы указать на новую базу данных пустой
  4. Строительные миграции с ./symfony doctrine:generate-migrations-diff. Это создаст миграцию на основе вашего файла схемы, чтобы довести вашу (пустая) база данных до настоящего времени
  5. Запустить ./symfony doctrine:migrate и следить за ошибками. Исправьте их, установив файл схемы. Удалите миграцию, созданную на шаге 4. Сбросьте данные databse ./symfony doctrine:drop-db && ./symofny doctrine:build-db и вернитесь к шагу 4. Продолжайте, пока вы не создадите схему, не создающую чистый набор файлов миграции, которые могут запускаться без ошибок.
  6. Перестроить ваши модели с ./symfony doctrine:build --model --forms --filters

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

Если вы хотите, чтобы сделать новое изменение в вашу базу данных, то теперь так просто, как

  1. Внесите необходимые изменения в вашем schema.yml
  2. Run ./symfony doctrine:generate-migrations-diff
  3. вручную просмотреть созданные Миграции
  4. Запустите ./symfony doctrine:migrate, чтобы убедиться, что миграции выполняются без ошибок.
  5. Перестройте свою модель, формы и фильтры ./symfony doctrine:build --model --forms --filters

Пройти через этот процесс может время от времени разочаровывать, но это то, что вам нужно сделать только один раз, чтобы создать действительно хорошее, основанное на построении.

Смежные вопросы