Доктрина / Symfony породили миграции из строя - PullRequest
2 голосов
/ 27 декабря 2010

Я не уверен, что это ошибка, но она мне кажется.

Когда я генерирую миграции с использованием таблиц generate-migrations-diff, включающих таблицы с внешними ключами в Symfony, возникающие миграции выглядят не по порядку.

Например, при условии, что у меня есть внешний ключ в таблице A для таблицы B, и я удаляю таблицу B и поле ссылки в таблице A, первая миграция удаляет таблицу B и столбец в таблице A, тогда как вторая миграция затем удаляется ограничение внешнего ключа в таблице A. Первая миграция не работает, поскольку поле в таблице A с ограничением внешнего ключа не может быть удалено, равно как и таблица B не может быть удалена из-за ограничения внешнего ключа.

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

Я использую mysql 5.1.37 в качестве моей СУБД.

Вот часть сгенерированного кода:

class Version94 extends Doctrine_Migration_Base
{
    public function up()
    {
        $this->dropTable('B');
        $this->removeColumn('A', 'b_id');
    }
.
.
.


class Version95 extends Doctrine_Migration_Base
{
    public function up()
    {
        $this->dropForeignKey('A', 'a_b_id_b_id');
    }

1 Ответ

1 голос
/ 30 декабря 2010

Это почти наверняка ошибка. По моему опыту, doctrine:generate-migrations-diff очень ненадежен и будет генерировать неправильные миграции для более сложных изменений.

Вы можете сообщить о проблеме здесь .

...