2013-04-17 3 views
2

Я пытался добавить внешний ключ к моему столу с помощью 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.

ответ

0

Я нашел его. Извините всех. Проблема заключалась в том, что у меня было 0 в качестве значения по умолчанию для моих полей в то время как моя исходная таблица не имела никакого значения для 0.

0

enter image description here

Если вы используете HeidiSQL это довольно легко.

Просто просмотрите изображение, нажмите + Добавить для добавления внешних ключей.

Я предпочитаю GUI способ создания таблиц и их атрибутов, поскольку он экономит время и уменьшает количество ошибок.