문제 발생
토이 프로젝트를 진행 하던 중에 DB 어느 테이블의 Primary Key에 auto_increment를 설정하지 않아서 변경하는 과정에서 발생한 오류이다.
원인
에러를 읽어보니 다른 테이블과의 관계를 통해 설정된 foreign key 때문에 해당 컬럼을 변경할 수 없다는 것이다.
해결방안
설정된 foreign key를 잠시 제거하고, 컬럼의 속성을 변경해 주고, 다시 foreign key를 설정해주면 된다.
이때, 다른 세션에서 데이터에 접근할 수 없게 연관된 table들을 LOCK 해준 상태에서 진행해야 한다.
해결과정
먼저, 해결과정에서 찾은 stackoverflow 사이트이다.
stackoverflow.com/questions/13606469/cannot-change-column-used-in-a-foreign-key-constraint
우선, 모든 선언은 동일한 세션에서 이루어 져야 한다.
과정
- table에 lock 설정
- foreign key 해제
- 변경해야할 속성들을 변경
- foreign key 재설정
- table에 걸린 lock 해제
Lock을 설정하고 해제하는 방법은 여기 tutorial을 참고하자.
www.mysqltutorial.org/mysql-table-locking/
'DB > MySQL' 카테고리의 다른 글
[MySQL] Delimiter 사용법 (0) | 2020.09.16 |
---|---|
페이징 테스트(procedure 이용) (0) | 2020.09.16 |
mysql error 2003 (2) | 2020.09.15 |
datetime vs timestamp (0) | 2020.09.07 |