테이블에서 행을 삭제하는 데 문제가 있습니다.
이 쿼리를 사용하여 먼저 외래 키를 삭제한 다음 키가 가리키는 열을 삭제합니다.
으아악제약조건을 제거하면 효과적입니다. 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粉0685109912024-03-26 16:29:38
이전에는 이런 일이 발생하지 않았지만 너무 심해서 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.
키를 제거한 다음 외래 키, 열을 제거해 보는 것이 좋습니다.