자체 참조하는 외래 키가있는 MySQL 테이블이 있습니다. ON DELETE CASCADE는 완벽하게 작동하지만 부모 엔티티에 대해 최대 14 레벨까지만 작동한다는 이상한 행동을 발견했습니다. 마자는 15 레벨의 자녀를 추가하고 오류를 던지기 시작 부모를 삭제하려고으로DELETE CASCADE에서 15 레벨을 초과하는 자체 참조 MySQL 테이블에서 오류가 발생합니다.
이미지입니다 "삭제하거나 부모 행을 업데이트 할 수 없습니다 외래 키 제약 조건 실패" 계층 구조.: 여기
- Child15 삭제에, 부모, Child15을 삭제하지 않고
- 을 삭제할 수 있습니다.
동작을 재현하는 샘플 스키마는 here입니다. 스키마를 빌드하기 전에 id = 2 대신 id = 1 인이 쿼리 라인을 붙여 넣으십시오.
나는 가능한 해결 방법가 바닥을 이동DELETE FROM table1 WHERE id = 1;
을 삭제하는 동안
- SET의 FOREIGN_KEY_CHECKS = 0
- 처럼 삭제 알고 있지만 나는이 몇 가지 알려진 제한 사항입니다 알고 싶어요 ON CASCADE DELETE에 대한 MySQL 사용
내가 MySQL 서버 버전 5.6