테이블 A
에서 ForeignKey
로 타 테이블 B
의 column
C
를 가리키려 했더니 ForeignKey Mismatch
가 뜨는 이유는:
B
란 테이블이 없거나B
란 테이블은 있는데 C
란 column
이 없거나Column
C
가 unique
한 column
이 아니거나(ForeignKey
는 unique
한 column
만 가리킴. 똑같은 게 여럿이면 어떤 row
를 가리켜야 할지 모르니까)primary key
라 명시를 하지 않고 primary key
를 가리키는 경우(?)B
가 primary key
가 2개면 그 2개를 다 가리켜줘야 하는데 하나만 가리킨 경우출처: https://stackoverflow.com/questions/5208245/what-is-causing-foreign-key-mismatch-error
SQLAlchemy
에서 ForeignKey
로 2개 이상을 가리키는 법:
class Author(Base):
__tablename__ = 'authors'
firstName = Column(String(20), primary_key=True)
lastName = Column(String(20), primary_key=True)
books = relationship('Book', backref='author')
class Book(Base):
__tablename__ = 'books'
title = Column(String(20), primary_key=True)
author_firstName = Column(String(20))
author_lastName = Column(String(20))
__table_args__ = (
ForeignKeyConstraint([author_firstName, author_lastName],
[Author.firstName, Author.lastName]),)
ForeignKeyConstraint
를 써야만 칼럼 2개 이상을 같이 가리킬 수 있다.
출처: https://stackoverflow.com/questions/7504753/relations-on-composite-keys-using-sqlalchemy