[MySQL 에러] ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails 해결

리눅스/MySQL|2022. 6. 30. 10:10
반응형

레코드를 삭제할때 아래와 같은 에러 메세지가 출력되었다면

 

mysql> delete from log where idx='161';
ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails (`baudit`.`checklist`, CONSTRAINT `fk_checklist_log1` FOREIGN KEY (`log_idx`) REFERENCES `log` (`idx`))

 

다른 곳 (checklist 테이블의 log_idx 컬럼) 에서 현재 삭제하려는 데이터 (log 테이블의 idx 컬럼) 를 참조하고 있다는 메세지 입니다.

해결 방법으로는 아래 두가지가 있습니다.

 

1. 관련 데이터 삭제

 

순차적으로 checklist 테이블에서 관련 레코드 삭제 후 log 테이블에서 해당 레코드 삭제

 

2. 참조 무시하고 삭제

 

mysql> SET foreign_key_checks = 0;
Query OK, 0 rows affected (0.00 sec)

mysql> delete from log where idx='161';
Query OK, 1 row affected (0.02 sec)

mysql> SET foreign_key_checks = 1;
Query OK, 0 rows affected (0.00 sec)

 

 

반응형

댓글()