Error 1452: Cannot add or update a child row
এই এরর হয় যখন চাইল্ড টেবিলে এমন একটি ফরেন কি মান ইনসার্ট/আপডেট করা হয় যা প্যারেন্ট টেবিলে বিদ্যমান নেই।
উদাহরণ সেটআপ
mysql> CREATE TABLE ChildDemo (id INT, FKPK INT); mysql> CREATE TABLE ParentDemo (FKPK INT, Name VARCHAR(100), PRIMARY KEY (FKPK)); mysql> ALTER TABLE ChildDemo ADD CONSTRAINT ConstChild FOREIGN KEY (FKPK) REFERENCES ParentDemo(FKPK);
এরর উত্পাদন
mysql> INSERT INTO ChildDemo VALUES (1, 3); ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`business`.`childdemo`, CONSTRAINT `ConstChild` FOREIGN KEY (`FKPK`) REFERENCES `parentdemo` (`fkpk`))
কারণ: ParentDemo-এ FKPK = 3 वाली কোনো সারি নেই।
সমাধান
- প্রথমে প্যারেন্ট টেবিলে মিলে যাওয়া রো ইনসার্ট করুন:
INSERT INTO ParentDemo VALUES (3, 'SomeName'); - তারপর চাইল্ড টেবিলে ইনসার্ট করুন।
- বা কনস্ট্রেইন্ট ডিজাইনে
ON DELETE SET NULL/CASCADEব্যবহার করুন।
মূল নীতি: ফরেন কি রিলেশনশিপে প্যারেন্টে ডেটা থাকতে হবে চাইল্ডে রেফারেন্স করার আগে।