728x90
실수로 중복으로 foreign key를 만들어버렸다. 중복된 foreign key를 지워보자!
아래 DDL을 확인해보면 following_id를 갖는 foreign key가 2개 있는 것을 알 수 있다.
CREATE TABLE `follow` (
`id` bigint NOT NULL AUTO_INCREMENT,
`follower_id` bigint NOT NULL,
`following_id` bigint NOT NULL,
PRIMARY KEY (`id`),
KEY `follower_id` (`follower_id`),
KEY `following_id` (`following_id`),
CONSTRAINT `follow_ibfk_1` FOREIGN KEY (`follower_id`) REFERENCES `member` (`id`),
CONSTRAINT `follow_ibfk_2` FOREIGN KEY (`following_id`) REFERENCES `member` (`id`), # 요놈이랑
CONSTRAINT `follow_ibfk_3` FOREIGN KEY (`following_id`) REFERENCES `member` (`id`) # 요놈
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
외래키 삭제
테이블명은 "follow", 제약 조건명은 "follow_ibfk_3"이다.
alter table [테이블명] drop foreign key [제약 조건명]
나는 follow_ibfk_3 제약조건명을 가진 foreign key를 지울 것이기 때문에 아래와 같이 작성했다.
alter table follow drop foreign key follow_ibfk_3
에러
이렇게 쉽게 끝날리가 없다. 에러를 만났다.
Error Code: 1046. No database selected Select the default DB to be used by double-clicking its name in the SCHEMAS list in the sidebar.
DB가 Select되어있지 않다고 한다. 이럴 때는 DB를 선택해주면 된다.
MySQL 워크밴치에서 아래와 같이 테이블에 우클릭 후 Set as Default Schema를 클릭해주면된다.
다시 foreign key 삭제 쿼리를 날려보고 잘 삭제되었는지 확인해보자
select * from information_schema.table_constraints where table_name = 'follow'
잘 삭제된 것을 확인할 수 있다.
728x90
'SQL' 카테고리의 다른 글
SQL - Oracle과 MySQL 문법 차이 (0) | 2023.06.28 |
---|---|
SQL - 가독성 좋은 SQL 작성하기 (0) | 2023.06.23 |
MySQL - 프로그래머스 164670. 조건에 맞는 사용자 정보 조회하기 (0) | 2023.05.29 |
Querydsl - Querydsl 프로젝션으로 DTO 조회 (0) | 2023.05.08 |
MySQL - 프로그래머스 157341. 대여 기록이 존재하는 자동차 리스트 구하기 (MONTH( ) 함수) (0) | 2023.05.06 |