Код ошибки: 1005. Невозможно создать таблицу '...' (номер ошибки: 150) - PullRequest
98 голосов
/ 26 января 2012

Я искал решение этой проблемы в Интернете и проверял вопросы о переполнении стека, но ни одно из решений не помогло в моем случае.

Я хочу создать внешний ключ от таблицы sira_no до metal_kod.

ALTER TABLE sira_no
    ADD CONSTRAINT METAL_KODU FOREIGN KEY(METAL_KODU)
    REFERENCES metal_kod(METAL_KODU)
    ON DELETE SET NULL
    ON UPDATE SET NULL ;

Этот скрипт возвращает:

Error Code: 1005. Can't create table 'ebs.#sql-f48_1a3' (errno: 150)

Я попытался добавить индекс в ссылочную таблицу:

CREATE INDEX METAL_KODU_INDEX ON metal_kod (METAL_KODU);

Я проверил METAL_KODU в обеих таблицах (кодировка и сопоставление), но не смог найти решение этой проблемы. Как я могу решить эту проблему?

Вот таблица metal_kod:

METAL_KODU    varchar(4)    NO    PRI
DURUM    bit(1)    NO
METAL_ISMI    varchar(30)    NO
AYAR_YOGUNLUK    smallint(6)    YES        100

Ответы [ 11 ]

0 голосов
/ 21 января 2016

MyISAM был только что упомянут.Просто попробуйте добавить ENGINE = MyISAM DEFAULT CHARSET = latin1 AUTO_INCREMENT = 2; в конце оператора, предполагая, что другие ваши таблицы были созданы с помощью MyISAM.

CREATE TABLE IF NOT EXISTS `tablename` (
  `key` bigint(20) NOT NULL AUTO_INCREMENT,
  FOREIGN KEY `key` (`key`) REFERENCES `othertable`(`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
...