Symfony: SQLSTATE[HY000]: General error: 1005 Can't create table (errno: 150)
Ночью не спалось, поэтому решил дописать некоторый функционал в новой версии этого блога. Блог пишу на Symfony, в качестве ORM использую Doctrine. Так вот, столкнулся с ошибкой SQLSTATE[HY000]: General error: 1005 Can't create table 'itrem.#sql-2f3f_2a7' (errno: 150) при обновлении схемы БД..
Полностью ошибка выглядит так:
[Doctrine\DBAL\DBALException]
An exception occurred while executing 'ALTER TABLE tags ADD CONSTRAINT FK_6FBC94264B89032C FOREIGN KEY (post_id) REFERENCES posts (id)':
SQLSTATE[HY000]: General error: 1005 Can't create table 'itrem.#sql-2f3f_2a7' (errno: 150)[PDOException]
SQLSTATE[HY000]: General error: 1005 Can't create table 'itrem.#sql-2f3f_2a7' (errno: 150)
Обычно такая ошибка возникает, когда foreign key и referenced key не совпадают по типу, но в моем случае был обычный маппинг с primary полем, и там все было Ок:
1 2 3 4 5 6 7 |
/** * @ORM\ManyToOne(targetEntity="Post", inversedBy="tags") * @ORM\JoinColumn(name="post_id", referencedColumnName="id") */ protected $post; |
Проблему я нашел методом "тыка", при изучении таблиц, я заметил что таблица tags создалась в InnoDB, при этом таблица post была в MyISAM (наследие миграции с windows на linux). Так вот, изменив тип таблицы tags на MyISAM все заработало, апдейт базы сразу же прошел:
1 2 3 4 5 |
$ php app/console doctrine:schema:update --force Updating database schema... Database schema updated successfully! "4" queries were executed |
Так что, когда будете искать где зарылась проблема, обратите внимание на тип таблиц. Возможно, это так же Ваш случай.
Author: | Tags: /
| Rating:
Leave a Reply