2009-12-06 1 views
3

я генерация миграции между различными файлами YAML схемой: т.е. работает:Дополнительное changeColumns в Доктрине генерации-Миграции дифференциал

Symfony доктрины: генерировать-Миграцию дифференциал

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

Например, если вы запускаете generate-migrations-diff, не изменяя свой файл схемы, вы должны получить пустую функцию up(). Тем не менее, функция, которая появляется для меня, имеет вызов changeColumn для практически каждой таблицы в моей базе данных.

Я делаю что-то неправильно или это ошибка?

+0

Ваш db синхронизирован с прежним yml? задача сравнивает текущий db и новый yml. afaik вы не можете сравнивать два yml напрямую с задачей командной строки по умолчанию (сначала вам нужно синхронизировать фактический db с первым) – gpilotino

ответ

10

Генерация-migrations-diff не различает два разных файла yaml. Он фактически сравнивает ваши модели и ваш файл yaml, а затем создает миграцию на основе различий. Если исходить из БД, которая находится в синхронизации с YAML и классами, рабочий процесс, чтобы вносить изменения в схемы должны быть:

  1. Изменить YAML файл
  2. генерировать-миграциями-диф для дифф текущий (изменен) yaml с вашими (неизмененными) моделями. Это создаст файл миграции в вашем каталоге doctrine/migrations (или любой параметр migrations_path установлен в вашей конфигурации доктрины).
  3. мигрирует запустить миграцию, созданную на шаге 2, и изменить вашу базу данных
  4. генерировать-модель-YAML для создания новых классов на основе файла YAML. Они идут, где вы указали, что сгенерированные модели идут (models_path в вашей конфигурации доктрины).
  5. generate-sql для создания файла SQL. Это пойдет туда, где установлена ​​ваша конфигурация sql_path вашего доктрины.
Смежные вопросы