이 오류는 테이블 사이에 외래 키 제약 조건을 추가하고 자식 테이블에 레코드를 삽입할 때마다 발생합니다. 예를 들어 보겠습니다.
자식 테이블을 만드는 중입니다.
mysql> create table ChildDemo -> ( -> id int, -> FKPK int -> ); Query OK, 0 rows affected (0.86 sec)
두 번째 테이블을 만드는 중입니다.
mysql> create table ParentDemo -> ( -> FKPK int, -> Name varchar(100) -> , -> primary key(FKPK) -> ); Query OK, 0 rows affected (0.57 sec)
외래 키 제약 조건을 추가하려면
mysql> alter table ChildDemo add constraint ConstChild foreign key(FKPK) references ParentDemo(FKPK); Query OK, 0 rows affected (1.97 sec) Records: 0 Duplicates: 0 Warnings: 0
외래 키 제약 조건을 생성한 후 첫 번째 테이블이나 자식 테이블에 레코드를 삽입할 때마다 위와 같은 오류가 발생합니다.
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`))
다른 테이블에 일치하는 행이 없는 행을 추가하려고 할 때 오류가 발생합니다.
명시된 대로
“외래 키 관계에는 중앙 데이터 값을 보유하는 상위 테이블과 상위 테이블을 가리키는 동일한 값이 있는 하위 테이블이 포함됩니다. FOREIGN KEY 절은 자식 테이블에 지정됩니다. 상위 테이블에 일치하는 후보 키 값이 없는 경우 하위 테이블에서 외래 키 값을 생성하려는 모든 INSERT 또는 UPDATE 작업을 거부합니다."