인덱스 '*'을(를) 삭제할 수 없습니다. 필수 -> 외래 키 제약 조건 중 어느 것입니까?
P粉155710425
P粉155710425 2024-03-25 23:27:49
0
2
440

컨텍스트

테이블에서 행을 삭제하는 데 문제가 있습니다.

이 쿼리를 사용하여 먼저 외래 키를 삭제한 다음 키가 가리키는 열을 삭제합니다.

으아악

제약조건을 제거하면 효과적입니다. Cannot drop index 'fk_res_to_addr': required in aforeign key constraint로 인해 열 삭제가 실패합니다.

내가 지금까지 시도한 것

저는 먼저 해당 인덱스에 여전히 의존하는 것이 무엇인지 알아내려고 노력했습니다. 나는 다음 쿼리를 사용했습니다(이 답변에서 찾을 수 있음):

으아악

근데 거기엔 아무것도 없어요.

그런 다음 확인을 비활성화해 보았습니다.

으아악

물론, 다시 활성화하세요. 이것도 효과가 없습니다.

이 인덱스에 따라 무엇이 달라지는지 알아내기 위해 제가 할 수 있는 다른 방법이 있나요? 뭔가 빠졌나요?

** 편집 - 요청에 따른 테이블 정의** 이것이 현재 테이블 정의입니다. 보시다시피 이제 address_id에는 외래 키가 있지만 인덱스는 여전히 남아 있습니다.

ALTER TABLE resources drop foreign key fk_res_to_addr;
    ALTER TABLE resources drop column address_id;

P粉155710425
P粉155710425

모든 응답(2)
P粉145543872

노력하고 싶다면

으아악

fk_res_to_addr'이 실제로 삭제되었는지 알려줄 수도 있습니다.

P粉068510991

이전에는 이런 일이 발생하지 않았지만 너무 심해서 mysql 버그가 아닐까 의심됩니다. mariadb에서는 "그냥" 작동합니다.

Can't DROP 'fk_res_to_addr'; 열/키가 존재하는지 확인하고 보고한 오류가 표시되어야 합니다. https://dbfiddle.uk/?rdbms=mysql_5.7&fiddle=c5b0bbc9d6c12f74e00ba8d059a15638

을 참조하세요.

생성 시 mysql은 fk에 할당한 이름을 사용하여 인덱스를 생성하고 자체 이름을 fk에 할당합니다. 결과는 위에서 언급한 오류와 https://dbfiddle.uk/?rdbms=mysql_5입니다. 7&바이올린=c5b0bbc9d6c12f74e00ba8d059a15638.

키를 제거한 다음 외래 키, 열을 제거해 보는 것이 좋습니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿