Я пытался добавить внешний ключ к моему столу с помощью HeidiSQL, и я получаю ошибку 1452.Попытки добавить внешний ключ в MySQL с HeidiSQL
После прочтения вокруг я убедился все мои таблицы были запущены на InnoDB, а также проверять, что у них одинаковый тип данных, и единственный способ добавить свой ключ: если я отброшу все свои данные, которые я не собираюсь делать, так как я потратил немало часов на это.
вот мой стол создать код:
CREATE TABLE `data` (
`ID` INT(10) NOT NULL AUTO_INCREMENT,
#bunch of random other columns stripped out
`Ability_1` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
#more stripped tables
`Extra_Info` SET('1','2','3','Final','Legendary') NOT NULL DEFAULT '1' COLLATE 'utf8_unicode_ci',
PRIMARY KEY (`ID`),
UNIQUE INDEX `ID` (`ID`)
)
COLLATE='utf8_unicode_ci'
ENGINE=InnoDB
AUTO_INCREMENT=650;
здесь является таблица 2
CREATE TABLE `ability` (
`ability_ID` SMALLINT(5) UNSIGNED NOT NULL AUTO_INCREMENT,
#stripped columns
`Name_English` VARCHAR(12) NOT NULL COLLATE 'utf8_unicode_ci',
PRIMARY KEY (`ability_ID`),
UNIQUE INDEX `ability_ID` (`ability_ID`)
)
COLLATE='utf8_unicode_ci'
ENGINE=InnoDB
AUTO_INCREMENT=165;
Наконец здесь является создание кода наряду с сообщением об ошибке.
ALTER TABLE `data`
ADD CONSTRAINT `Ability_1` FOREIGN KEY (`Ability_1`) REFERENCES `ability` (`ability_ID`) ON UPDATE CASCADE ON DELETE CASCADE;
/* SQL Error (1452): Cannot add or update a child row: a foreign key constraint fails (`check`.`#sql-ec0_2`, CONSTRAINT `Ability_1` FOREIGN KEY (`Ability_1`) REFERENCES `ability` (`ability_ID`) ON DELETE CASCADE ON UPDATE CASCADE) */
Если есть что-то еще, что я могу предоставить, сообщите мне, что это действительно беспокоит меня. Я также использую 5.5.27 - MySQL Community Server (GPL), который поставляется с установщиком xampp.