집 >데이터 베이스 >MySQL 튜토리얼 >여러 쿼리를 사용하여 외래 키 제약 조건이 있는 테이블을 삭제할 수 없는 이유는 무엇입니까?
가짜 외래 키 제약 조건 실패
area라는 이름의 테이블을 데이터베이스에서 삭제하려고 할 때 외래 키를 나타내는 오류 메시지가 발생했습니다. 제약 실패. 영역과 외래 키 관계가 있는 다른 모든 테이블을 삭제했음에도 불구하고 제약 조건은 계속 유지되었습니다.
가능한 이유
데이터베이스에서 사용하는 스토리지 엔진인 InnoDB, 일반적으로 외래 키가 현재 스키마 외부의 테이블을 참조하는 것을 허용하지 않습니다. 따라서 외래 키 제약 조건으로 인해 여전히 영역 테이블 삭제가 차단되는 이유가 의아했습니다.
해결 방법
추가 조사 결과 특정 데이터베이스 도구에서 MySQL 쿼리 브라우저 또는 phpMyAdmin과 같은 각 쿼리에 대해 새 연결을 엽니다. 이 동작은 여러 쿼리에 변경 사항이 전파되는 것을 방지합니다. 문제를 해결하려면 단일 쿼리 내에서 모든 삭제 문을 실행해야 합니다.
SET FOREIGN_KEY_CHECKS=0; -- Disable foreign key checks DROP TABLE my_first_table_to_drop; DROP TABLE my_second_table_to_drop; SET FOREIGN_KEY_CHECKS=1; -- Re-enable foreign key checks
외래 키 검사를 비활성화하면 제약 조건 오류를 발생시키지 않고 외래 키 관계에 포함된 테이블을 삭제할 수 있습니다. 이후 외래 키 검사를 다시 활성화하면 향후 작업을 위한 데이터베이스 무결성이 보장됩니다.
위 내용은 여러 쿼리를 사용하여 외래 키 제약 조건이 있는 테이블을 삭제할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!