私はSQLに非常に慣れていないので、単純なALTER TABLEを実行して新しい列を作成し、それを外部キーとして使用してデータベース内の別の単純なテーブルを参照しようとしています。両方のテーブルをInnoDBに変更しました
ただし、ALTER TABLEコードを実行すると、次のエラーが発生します。
Error 1452 Cannot add or update a child row:
a foreign key constraint fails (`toys`.<result 2 when
explaining filename '#sql-6d4_6'>, CONSTRAINT
`#sql-6d4_6_ibfk_1` FOREIGN KEY (`toy_id`) REFERENCES `toys` (`toy_id`))
以下は、両方のテーブルのDESCです。
表1:
FIELD TYPE NULL KEY EXTRA
toy_id int(11) NO PRI auto_increment
toy varchar(50) YES
表2:
FIELD TYPE NULL KEY EXTRA
boy_id int(11) NO PRI auto_increment
boy varchar(50) YES
そして、これは私が実行しようとしていたALTERクエリです。
ALTER TABLE boys
ADD COLUMN toy_id INT NOT NULL,
ADD CONSTRAINT toys_toy_id_fk
FOREIGN KEY(toy_id)
REFERENCES toys(toy_id);
私はそれを理解しようとしていたるところを見てきましたが、運がありませんでした。よろしくお願いします。この初心者に親切にしてください:)
編集:
両方のテーブルのSHOWCREATETABLEは次のとおりです。
表1:
CREATE TABLE `toys` (
`toy_id` int(11) NOT NULL AUTO_INCREMENT,
`toy` varchar(50) DEFAULT NULL,
PRIMARY KEY (`toy_id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8
表2:
CREATE TABLE `boys` (
`boy_id` int(11) NOT NULL AUTO_INCREMENT,
`boy` varchar(50) DEFAULT NULL,
PRIMARY KEY (`boy_id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8