본문 바로가기
Web development/Node.js & Typescript

[Sequelize] there is no unique constraint matching given keys for referenced table 원인과 해결방법

by 자몬다 2020. 6. 23.

기존에 MySQL+Sequelize를 사용하다가, PostgreSQL로 DB를 이전하게 되었다.

dialect랑 접속정보만 바꿔주면 되는 간단한 작업이었는데, 아래와 같은 에러를 만나게 되었다.

 

there is no unique constraint matching given keys for referenced table "rfqs"

무섭다

멀쩡하게 잘 되던게 DB를 바꾸니까 에러가 났기 때문에 설정이라든지 문법의 문제겠거니 했는데..

 

위 에러는 PK와 FK가 일치하지 않을 때 나는 에러다.

내 경우 한 테이블에 PK가 두개 지정되어 있었고, 해당 키를 FK로 갖는 다른 테이블은 두 PK중 하나만을 FK로 지정하고 있었다.

 

예를들어 (아무렇게나 쓴 수도코드다)

Person {
	id: integer;
	email: string;
	name: string;
	PK(id, email)
}

Wallet {
	id: integer PK;
	person_id: Person(id) FK;
	balance: integer;
	PK(id)
	FK(person_id)
}

위 같은 경우 Person의 PK 중 하나를 제거하거나, Wallet의 FK에 email도 추가해주어야 한다.

댓글