MySQL ошибка 1005 при создании таблицы - PullRequest
0 голосов
/ 17 июня 2009

Определение моей таблицы:

CREATE TABLE x (
    a INT NOT NULL,
    FOREIGN KEY (a) REFERENCES a (id) ON UPDATE CASCADE ON DELETE CASCADE
) ENGINE = InnoDB;

, которая выдает следующую ошибку:

ERROR 1005 (HY000): Can't create table './abc/x.frm' (errno: 150)

Что это значит?

Ответы [ 5 ]

4 голосов
/ 17 июня 2009

Может быть, поэтому

Если вы воссоздаете таблицу, которая была упал, оно должно иметь определение соответствует внешнему ключу ограничения, ссылающиеся на это. Это должно иметь правильные имена и типы столбцов, и он должен иметь индексы на ссылочные ключи, как указано ранее. Если они не удовлетворены, MySQL возвращает ошибка номер 1005 и относится к ошибке 150 в сообщении об ошибке.

от: http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html

3 голосов
/ 17 июня 2009

используйте perror с номером ошибки "errno", чтобы получить сообщение об ошибке (perror 150):

MySQL код ошибки 150: ограничение внешнего ключа сформировано неправильно

1 голос
/ 26 ноября 2009

Это также происходит, если есть дубликаты имен внешних ключей.

Скажем, например, что у вас есть две очень похожие таблицы с длинными именами. Чтобы «сэкономить» время, вы копируете и вставляете имена внешнего ключа из CREATE первой таблицы, затем отвлекаетесь и не можете обновить часть имени таблицы, которая отличается. Они делят внешний ключ с другой таблицей, что приводит к одному или нескольким идентичным именам внешнего ключа.

Заметили ли вы, что удар головой о монитор не так хорош с ЖК-дисплеем?

1 голос
/ 17 июня 2009

Возможно, что a.id не существует.

0 голосов
/ 23 марта 2016

Эта ошибка также выдается, когда указанная таблица не использует формат хранения InnoDB.

...