sqlalchemy.exc.IntegrityError: (pymysql.err.IntegrityError) (1215, 'Cannot add foreign key constraint')

x·2023년 5월 26일
0

error

목록 보기
4/4

상황

sqlalchemy로 만든 모델을 기반으로 테이블을 생성하려고 함
'Cannot add foreign key constraint', IntegrityError 외래키 제약 추가 불가, 무결성 에러 발생

원인

부모 테이블 데이터 삭제 시 ondelete='SET NULL'로 관계를 없애주는 조건이 있지만 nullable=False 때문에 null이 불가함. 그래서 에러가 발생했음.

모델을 사용하지만 시리얼라이징 용도 정도로 썼고, 테이블 생성할 때는 사용하지 않아 문제되는 경우를 파악하지 못한 것도 원인임.

class A(Base):
    __tablename__ = 'a'
    
    category_id = Column(ForeignKey('a_category.id', ondelete='SET NULL', onupdate='CASCADE'), nullable=False)

해결 방법

조건을 통일시켜준다

class A(Base):
    __tablename__ = 'a'
    
    category_id = Column(ForeignKey('a_category.id', ondelete='SET NULL', onupdate='CASCADE'), nullable=True)

0개의 댓글