집 >데이터 베이스 >MySQL 튜토리얼 >MySQL에서 테이블을 삭제할 때 '외부 키 제약 조건 실패' 오류가 발생하는 이유는 무엇입니까?
"가짜 외래 키 제약 조건 실패" Enigma: 예상치 못한 오류 탐색
영역 테이블에서 DROP TABLE 문을 실행할 때 사용자는 다음을 수행할 수 있습니다. 수수께끼 같은 오류가 발생합니다. "상위 행을 삭제하거나 업데이트할 수 없습니다. 외래 키 제약 조건이 실패합니다." 이 당혹스러워 보이는 문제는 영역에 대한 외래 키 참조가 있는 다른 모든 테이블을 부지런히 제거한 후에도 발생합니다.
영역 테이블의 세부 사항을 살펴보면 기본 키(area_id), 고유 키(nombre_area_UNIQUE), 그리고 null이 아닌 열의 모음입니다. InnoDB 테이블은 개별 스키마 전반에 걸쳐 외래 키 제약 조건을 배제하도록 설계되었으므로 존재하지 않는 테이블에 외래 키가 존재한다는 것은 수수께끼가 됩니다.
그러나 문제의 핵심은 사용되는 특정 소프트웨어에 있습니다. MySQL 쿼리 브라우저 또는 phpMyAdmin을 활용하면 눈에 띄는 특징이 나타납니다. 각 쿼리는 새로운 연결을 시작합니다. 이러한 특징으로 인해 사용자는 단일 쿼리 내에 일련의 전체 삭제 문을 포함해야 합니다.
상황을 효과적으로 수정하기 위해 다음과 같은 일련의 문을 배포할 수 있습니다.
<code class="sql">SET FOREIGN_KEY_CHECKS=0; DROP TABLE my_first_table_to_drop; DROP TABLE my_second_table_to_drop; SET FOREIGN_KEY_CHECKS=1;</code>
호출하여 SET FOREIGN_KEY_CHECKS=0, 외래 키 제약 조건이 일시적으로 비활성화되어 대상 테이블 삭제가 용이해집니다. 이후에 SET FOREIGN_KEY_CHECKS=1을 사용하여 제약 조건을 다시 활성화하면 추가 보호 계층이 제공됩니다. 따라서 반복되는 오류를 피하여 사용자가 의도한 테이블을 성공적으로 삭제할 수 있습니다.
위 내용은 MySQL에서 테이블을 삭제할 때 '외부 키 제약 조건 실패' 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!