4

heidisql を使用してテーブルに外部キーを追加しようとしましたが、エラー 1452 が発生し続けます。

読み回した後、すべてのテーブルが 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) */

私が提供できるものが他にある場合は、これが本当に私を悩ませていることをお知らせください. xamppインストーラーに付属の5.5.27 - MySQL Community Server (GPL) も使用しています。

4

3 に答える 3

0

見つけた。ごめんなさい。問題は、元のテーブルには 0 の値がなかったのに、フィールドのデフォルト値として 0 があったことでした。

于 2013-04-17T13:28:01.840 に答える