DB/MySQL

[MySQL] ERROR 1833

프로호구래머 2021. 4. 9. 23:36

문제 발생

토이 프로젝트를 진행 하던 중에 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

 

Cannot change column used in a foreign key constraint

I got this error when i was trying to alter my table. Error Code: 1833. Cannot change column 'person_id': used in a foreign key constraint 'fk_fav_food_person_id' of table 'table.favorite_food' ...

stackoverflow.com

우선, 모든 선언은 동일한 세션에서 이루어 져야 한다.

과정

  1. table에 lock 설정
  2. foreign key 해제
  3. 변경해야할 속성들을 변경
  4. foreign key 재설정
  5. table에 걸린 lock 해제

 

Lock을 설정하고 해제하는 방법은 여기 tutorial을 참고하자.

www.mysqltutorial.org/mysql-table-locking/

 

MySQL Table Locking

In this tutorial, you will learn how to use MySQL locking for cooperating table access between sessions.

www.mysqltutorial.org

 

'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