내가해냄

"Cannot drop index: needed in a foreign key constraint"

836586697769 2024. 8. 26. 21:16

인덱스가 외래 키 제약 조건(Foreign Key) 때문에 삭제되지 않는 경우

1. Foreign Key 제약 조건 이름 확인

SHOW CREATE TABLE <table_name>;

2. 외래 키 제약 조건 삭제

ALTER TABLE <your_table_name> DROP FOREIGN KEY <foreign_key_name>;

3. 인덱스 삭제

ALTER TABLE <your_table_name> DROP INDEX <index_name>;

4. 외래 키 제약 조건 재생성

ALTER TABLE <your_table_name>
ADD CONSTRAINT <foreign_key_name>
FOREIGN KEY (<foreign_column_name>) REFERENCES <foreign_table_name> (<foreign_table_column>);

 

복잡하니까 예시로 봅시다

SHOW CREATE TABLE 명령어로 확인한 Foreign Key 제약 조건 이름이 다음과 같을 때 (일부만 떼어옴)

KEY idx_theme_store_price (store_id,price),
CONSTRAINT FK_254c27bc315fde04442fb5469b9 FOREIGN KEY (store_id) REFERENCES store (_id)

그리고 나는 저놈의 idx_ theme_store_price 인덱스를 지우고 싶은 상태

ALTER TABLE theme DROP FOREIGN KEY `FK_254c27bc315fde04442fb5469b9`;

ALTER TABLE theme DROP INDEX `idx_theme_store_price`;

ALTER TABLE theme
ADD CONSTRAINT `FK_254c27bc315fde04442fb5469b9`
FOREIGN KEY (`store_id`) REFERENCES `store` (`_id`);

쉽죠?

…..

ㅜㅜ