2010-12-27 1 views
2

Я не уверен, что это ошибка, но мне кажется, что это похоже на меня.Doctrine/Symfony сгенерировал миграцию не в порядке

Когда я генерирую миграцию с использованием метода 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

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

Вы можете сообщить об ошибке here.