>  기사  >  데이터 베이스  >  MySQL에서 테이블을 삭제할 때 "외부 키 제약 조건 실패" 오류가 발생하는 이유는 무엇입니까?

MySQL에서 테이블을 삭제할 때 "외부 키 제약 조건 실패" 오류가 발생하는 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-05 12:34:02565검색

Why Am I Getting a

"가짜 외래 키 제약 조건 실패" 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.