⭐ FK 컬럼 삭제가 안되는 상황
테이블에서 외래키 컬럼을 다음 방법으로 지우려고하면 문제가 발생한다.
사례1▶ FK컬럼은 일반 컬럼처럼 제거할 수 없음
즉, 아래와 같이 drop할 수 없다.
ALTER TABLE <테이블명> DROP <FK 컬럼명>
사례2▶ FK를 삭제하려는 부적절한 쿼리문
아래와 같이 <FK 컬럼명>을 그대로 입력하는 것은 부적절한 방법이다.
alter TABLE <테이블명> DROP FOREIGN KEY <FK 컬럼명>
다음과 같은 Error Code가 발생한다.
19:14:38 alter TABLE <테이블명> DROP <FK컬럼명> Error Code: 1828.
Cannot drop column '<FK컬럼명>':
needed in a foreign key constraint 'FK93exnhdf4698rqy4lmt5yapmr' 0.000 sec
⭐ 해결방법:
컬럼에 걸린 제약조건을 먼저 삭제해준 뒤에 해당 컬럼을 삭제할 수 있다.
⭐ 해결:
두 단계를 거치면 된다.
- 1단계
SHOW CREATE TABLE <테이블명>;
의 결과에서 Create Table 컬럼에서 아래와 같은 정보를 확인가능하다.
CONSTRAINT를 확인하자.
- 2단계
alter TABLE <테이블명> DROP FOREIGN KEY <위에서 찾은 CONSTRAINT>;
즉 맨끝에 FK 컬럼명을 쓰지 말고 관련 CONSTRAINT를 써야 한다.
정상적으로 CONSTRAINT가 지워진다
참고) 다시 SHOW CREATE TABLE <테이블명>;
으로 확인해보면 CONSTRAINT가 사라진 것을 확인 가능하다.
끝!
위와 같이 제약조건을 삭제해줬으므로, 이제 FK(였던)컬럼을 drop할 수 있다.
▶ 이제는 일반 컬럼처럼 drop 하면 된다.
alter TABLE <테이블명> DROP <FK 컬럼명>;
'Database' 카테고리의 다른 글
[DB] 인덱스 사용 이유 이해하기 (0) | 2023.10.17 |
---|---|
[H2] Column이 drop 되지 않음 | JPA Bean을 직접 주입하는 실습 중 (0) | 2023.01.25 |
mysql 서버 상태 확인하기(show status) | db connection 전후 Threads 관련 상태변수 확인 (0) | 2023.01.11 |
[DB] 상속 관계 매핑 전략 선택하기 (2) | 2022.12.30 |
ObjectInputStream | file에 이어쓰기로 writeObject 후 readObject하려할 때 object를 못읽는 문제 (0) | 2022.12.28 |