Main > Databases | Frameworks | MySQL | PHP | Symfony > Symfony: SQLSTATE[HY000]: General error: 1005 Can't create table (errno: 150)

Symfony: SQLSTATE[HY000]: General error: 1005 Can't create table (errno: 150)

08.10.2015 0 comments » Views: 1,795

Symfony

Ночью не спалось, поэтому решил дописать некоторый функционал в новой версии этого блога. Блог пишу на 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 полем, и там все было Ок:

Проблему я нашел методом "тыка", при изучении таблиц, я заметил что таблица tags создалась в InnoDB, при этом таблица post была в MyISAM (наследие миграции с windows на linux). Так вот, изменив тип таблицы tags на MyISAM все заработало, апдейт базы сразу же прошел:

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

Author: | Rating: 4/5 | Tags: , ,

Leave a Reply

Your email address will not be published. Required fields are marked *

Allowed HTML-tags: <a>, <code>, <i>, <em>, <strong>, <b>, <u>, <strike>