Как изменить структуру производственной базы данных с помощью Symfony 1.4 - PullRequest
0 голосов
/ 25 марта 2012

Проблема:

  • У меня есть проект Symfony с базой данных, полной производственных данных
  • Я хочу изменить его структуру (добавить / удалить таблицу или добавить / удалить / изменить существующее поле)

Как мне это сделать, не стирая мою базу данных?

Поскольку при изменении schema.yml вам необходимо doctrine build --all, если вы хотите, чтобы ваши изменения происходили в базе данных, и эта задача уничтожает базу данных, базу данных production .


То, что я пытался:

Этот блог в основном говорит следующее:

php symfony doctrine:data-dump
php symfony doctrine:build --all
phpsymfony doctrine:data-load data/fixtures/data.yml #default name for fixtures file

Но выдает ошибку об ограничении внешнего ключа. (В моем случае я пытаюсь добавить таблицу с внешним ключом в существующий).

Исходя из той же идеи: я попробовал следующее:

mysqldump -u root -p > DBexport.sql
php symfony doctrine:build --all

# open DBexport.sql in a text editor and remove all queries for
# creating the structure of the database
mysql -u root -p shop < DBexport_data.sql

Но у меня есть эта ошибка:

ОШИБКА 1136 (21S01) в строке 34: количество столбцов не соответствует количественному значению в строке 1

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

Ответы [ 2 ]

2 голосов
/ 25 марта 2012

Я интенсивно работаю с несколькими проектами Symfony, одним из которых является корпоративное приложение SAS (программное обеспечение как решение) с высоким трафиком, и мы НИКОГДА не распространяли изменения схемы со стороны Symfony.У нас на самом деле был новый младший разработчик, который случайно удалил данные из нашей базы данных разработчиков, попытавшись внести изменения в схему с помощью Symfony.

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

php symfony doctrine:build-model
php symfony doctrine:build-filters
php symfony doctrine:build-forms
php symfony cc

Убедитесь, что вы сначала внесете изменения в свою среду разработки, чтобы вы моглиПроверьте и убедитесь, что код работает.Затем, когда вы отправляете свой код в производственную среду, вы можете внести изменения в схему, а затем опубликовать код.Если изменения схемы, которые вы делаете, не нарушат существующую базу кода, я бы сделал их за день или два до нажатия кода

1 голос
/ 26 марта 2012

Я, возможно, неправильно понимаю вопрос, но не Миграции не решат вашу проблему?

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