n1ro°
RU

Ошибки · Решение

MySQL error 1005: Can't create table

Это общий код неудачи CREATE TABLE, поэтому ключ к диагностике — вложенный errno/storage-engine detail.

Редакция N1RO · Проверено

Короткий ответ

MySQL 1005 (`ER_CANT_CREATE_TABLE`) означает, что сервер не смог создать таблицу; дополнительный errno в сообщении указывает на конкретную причину.

Что означает ошибка

Это общий код неудачи CREATE TABLE, поэтому ключ к диагностике — вложенный errno/storage-engine detail.

Возможные причины

  • Неправильно сформирован foreign key, что для InnoDB часто сопровождается errno 150.
  • Файловая/engine-проблема мешает создать внутренние структуры таблицы.
  • DDL конфликтует с ограничениями или существующими объектами.

Что проверить

  • Сохраните полный текст ошибки, включая errno и имя таблицы.
  • Для InnoDB сразу проверьте `SHOW ENGINE INNODB STATUS` после сбоя.
  • Сверьте типы и индексы колонок parent/child у foreign key.

Безопасные шаги

  1. Исправьте конкретную причину из engine detail, а не повторяйте CREATE TABLE вслепую.
  2. Для FK добейтесь совпадения типов/индексов и существования parent key.
  3. Если причина файловая, проверьте права/место/состояние storage, не удаляя data files вручную.

Только безопасные обратимые действия. Опасные шаги — только по официальной инструкции и с пониманием рисков.

Когда нужен сервис

  • Если errno не объясняется схемой и повторяется на чистом DDL, DBA должен проверить error log и состояние storage engine.

Похожие ошибки

  • /errors/mysql-error-1040-con-count-error/
  • /errors/mysql-error-1048-bad-null-error/
  • /errors/mysql-error-1052-non-uniq-error/

Что учитывать

Точная причина зависит от версии ПО/прошивки, полного текста ошибки и контекста. Официальная инструкция имеет приоритет.

Официальный источник

Расшифровка сверена с официальными страницами поддержки из источников ниже. Редакция N1RO не диагностировала ваш конкретный случай.