복붙노트

[SQL] 테이블을 삭제할 수 없습니다 : 외부 키 제약이 실패

SQL

테이블을 삭제할 수 없습니다 : 외부 키 제약이 실패

MySQL의에서 나는 테이블을 드롭합니다. 나는 많은 것들을 시도했지만 나는 테이블 이름 bericht이 삭제 될 수 없다는 오류가 계속. 이것은 내가지고있어 오류입니다 :

어떻게하면이 테이블을 삭제합니까?

해결법

  1. ==============================

    1.이 트릭을 수행해야합니다

    이 트릭을 수행해야합니다

    SET FOREIGN_KEY_CHECKS=0; DROP TABLE bericht; SET FOREIGN_KEY_CHECKS=1;
    

    다른 사람들이 지적하는 바와 같이,이 그것의 무슨 질문에 요청에도 불구하고, 거의 절대 당신이 원하는 없습니다. 더 안전 솔루션은 bericht을 삭제하기 전에 bericht에 따라 테이블을 삭제하는 것입니다. 이 작업을 수행하는 방법에 대한 CloudyMarble 답변을 참조하십시오. 내가 또는 삭제하고 데이터베이스 자체를 다시 할 수 싶지 않을 때 나는 데이터베이스의 모든 테이블을 드롭 내 게시물에 배쉬와 방법을 사용합니다.

    다른 테이블은 삭제하려고하고 InnoDB의 데이터베이스 엔진을 사용하는 테이블에 대한 외래 키 제약 조건이있는 경우, # 1217 오류가 발생합니다. 다음 구속을 확인하고 일시적으로 비활성화가이 솔루션을 다시는-수 있습니다. 더 설명서를 읽어 보시기 바랍니다. 반드시 그렇지 않으면 당신은 깨진 상태로 데이터베이스를 떠날 수, 외래 키 묶기와 bericht에 따라 테이블의 필드를 삭제합니다.

  2. ==============================

    2.이 시도:

    이 시도:

    SELECT * 
    FROM information_schema.KEY_COLUMN_USAGE 
    WHERE REFERENCED_TABLE_NAME = 'YourTable';
    

    이 표는 당신이 테이블을 드롭 할 수있을 것입니다 이러한 참조, 또는이 표 참조 데이터 세트 데이터 세트를 삭제하면, 삭제하려는 테이블에 대한 참조를 가지고있는 당신을 제공한다

  3. ==============================

    3.사용은 외래 키를 볼 수 테이블 tbl_name를을 만들 보여

    사용은 외래 키를 볼 수 테이블 tbl_name를을 만들 보여

    당신은 외래 키를 드롭이 구문을 사용할 수 있습니다 :

    ALTER 표 tbl_name에 DROP FOREIGN KEY의 fk_symbol

    자세한 내용은 여기에서도 있습니다 (프랭크 Vanderhallen 게시물을 참조) http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html

  4. ==============================

    4.이것은 아마도 다른 스키마에 해당 오류를 얻고있는 이유를 같은 테이블이 있습니다.

    이것은 아마도 다른 스키마에 해당 오류를 얻고있는 이유를 같은 테이블이 있습니다.

    당신은 부모 행 먼저 자식 행을 삭제해야합니다.

  5. ==============================

    5.나는이 잠시 동안 부실 실현하고 답변을 선택했다, 그러나 대안에 대한 외래 키가 NULL이 다음 DELETE SET NULL의 ON 선택할 수 있도록하는 방법에 대해 설명합니다.

    나는이 잠시 동안 부실 실현하고 답변을 선택했다, 그러나 대안에 대한 외래 키가 NULL이 다음 DELETE SET NULL의 ON 선택할 수 있도록하는 방법에 대해 설명합니다.

    기본적으로, 당신의 테이블과 같이 변경해야합니다 :

    ALTER TABLE 'bericht' DROP FOREIGN KEY 'your_foreign_key';

    ALTER TABLE 'bericht' ADD CONSTRAINT 'your_foreign_key'FOREIGN KEY ( 'column_foreign_key') 참조 'other_table'( 'column_parent_key') ON UPDATE CASCADE ON DELETE SET NULL의;

    개인적으로 나는 다른 접근 방식을 지시 할 수 있으며, 불필요한 합병증을 피하기 위해 "DELETE SET NULL의 ON"모두 "ON UPDATE CASCADE"뿐만 아니라 사용하지만 당신의 세트를 추천 할 것입니다.

    도움이 되었기를 바랍니다.

  6. from https://stackoverflow.com/questions/11100911/cant-drop-table-a-foreign-key-constraint-fails by cc-by-sa and MIT license