MySQL: Can’t create table ‘….’ (errno: 150)

Во время восстановления базы из бекапа можно получить такую ошибку:
MySQL: Can’t create table ‘tablename’ (errno: 150)
Причина в том, что в процессе восстановления бэкапа MySQL пытается создать таблицуА, которая ссылается на таблицуБ, при этом до таблицыБ процесс восстановления MySQL еще не добрался и про ее существование ничего не знает.

Решение: открываете дамп базы вашим любимым текстовым редактором и вносите 2 строчки (выделено полужирным):
... тут всякие разные заголовки...
SET FOREIGN_KEY_CHECKS = 0;
create table…….. (самый первый запрос на создание таблицы)
…….. (тут весь остальной текст)
SET FOREIGN_KEY_CHECKS = 1; (самой последней строчкой)

Не забудьте точки с запятой в конце добавленных строчек.
Если по какой-то загадочной причине не помогает - попробуйте поставить
SET FOREIGN_KEY_CHECKS = 0;
непосредственно перед той таблицей, при создании которой выдается ошибка.

»

Оставить комментарий - Feel free to ask me in English

Он появится после того, как будет одобрен. - All comments are pre-moderated.

Внимание! Пожалуйста, не пишите в комментарии [url=... или [url]... - это будет считаться спамом. Если хотите дать ссылку - пишите просто адрес, до 2х на один коммент.
Attention! Please don't use "[url=..." or "[url]..." in comment's body or it will be deleted as spam
If you want to send me a link just type url, up to 2 urls in one comment.

Спасибо за отзыв! Thank you for a comment!