Я не уверен, что это ошибка, но она мне кажется.
Когда я генерирую миграции с использованием таблиц 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');
}