Старый компьютер: MySQL версии 5.0.51MySQL однажды разрешил колонку CHAR для FK в другую таблицу столбцов ENUM, но не больше?
Новый компьютер: MySQL версии 5.7.9
DDL надрез:
CREATE TABLE lookup (
keyvalue ENUM ('A', 'B', 'C', 'D') NOT NULL;
CONTSTRAINT lookuppk PRIMARY KEY (keyvalue)
);
CREATE TABLE othertable (
otherkey INT(5) NOT NULL AUTO_INCREMENT,
refkey CHAR(1),
CONSTRAINT otherpk PRIMARY KEY (otherkey),
CONSTRAINT reffk FOREIGN KEY (refkey) REFERENCES lookup(keyvalue)
);
Результат при запуске на старом компьютере: Нет проблем
Результат при запуске на новом компьютере: ОШИБКА 1215 (HY000): не удается добавить ограничение внешнего ключа
Это был экспериментальный база данных работает только на моей домашней машине, а не на работе или в реальной жизни. Я сделал это первоначально около четырех лет назад, и я начинаю переносить материал на недавно приобретенный домашний компьютер.
Ошибка, похоже, проста в том, что FK должен соответствовать типу данных ссылочного столбца точно. Оглядываясь назад, это плохой дизайн, я старше и мудрее, и я могу измениться. Но то, что мне любопытно, - это то, почему это разрешило более старая версия MySQL. Я просмотрел документацию, но ничего не нашел.
В заявлении CREATE TABLE нет движка. посмотрите, является ли по умолчанию MyISAM. Затем измените его на InnoDB. –