pymysql.err.IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails

문제 상황: pymysql을 사용하여 db에 저장하려고 하는데 pymysql.err.IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails ~ 에러가 뜸

에러 메시지를 읽어보면, 뭔가 integer값으로 들어가야 하는데 그게 아니라서 데이터 추가가 안되나 보다.

그런데, 똑같이 코드를 작성한 다른 모델에는 잘 들어가는데,
이 모델에만 안들어가는 상황.

과정

일단, db의 table 구조를 확인해보자..

# mysql

# table 구조 확인
desc [table이름];


(*system_nac에는 데이터가 잘 들어가나, 같은 코드의 system_vpn에는 에러가 나는 상황이였다.)

table 구조를 보니 역시 user_id부분의 type이 서로 다르다. 에러 메시지의 뒷부분에 user_id에 관한 언급이 있었으니, 이 때문이 분명하다.

같은 코드이고,, 분명 makemigrations와 migrate도 마친 상태..

해결

# mysql

drop table system_vpn;

수정 후 migrate한 것이 제대로 반영되지 않은 것이기 때문에
system_vpn 의 테이블을 삭제하고, 다시 migrate한다.
(이럴 경우에는 migrations 폴더의 migrate기록 파일을 삭제한 뒤 재진행한다.)

+ 그래도 에러가 발생한다면, db의 모든 table을 지우고 다시 진행해야지 뭐.....

좋은 웹페이지 즐겨찾기