Миграция Doctrine2 внутри Symfony2 создает исключение при создании индекса
Эта проблема
Без предыдущей миграции я запускаю:
app/console doctrine:migration:diff
app/console doctrine:migration:migrate
Я получил эту ошибку:
ALTER TABLE session ADD CONSTRAINT FK_9955C22EA76ED395 FOREIGN KEY (user_id) REFERENCES user(id)
Migration 20130320103822 failed during Execution. Error SQLSTATE[HY000]: General error: 1005 Can't create table 'mydb.#sql-3e4_75e0' (errno: 150)
[PDOException]
SQLSTATE[HY000]: General error: 1005 Can't create table 'mydb.#sql-3e4_75e0' (errno: 150)
Дополнительные знания
- Я объявляю свою сущность посредством аннотации в классе.
- Этот код работает (но я должен запустить вручную несколько операций, которые не запускаются после такого рода исключений)
Что бы я хотел знать
- Что вызывает эту ошибку?
- Есть ли способ это исправить? (например, через обновление Doctrine или некоторые параметры MySQL)
1 ответ
Решение
По предложению @Ocramius и @Lighthart, это проблема чистого SQL. Он возник из ошибочного объявления сущности Doctrine, порождающего несовместимый SQL.
Ошибка, описанная в вопросе, была связана с несоответствием на уровне столбцов, ключ был int(11) и внешний ключ varchar(255).