没有关系的唯一约束匹配

时间:2017-08-04 13:38:10

标签: sql postgresql sqlalchemy

我的架构中有三个关系表。在顶层,报告可以包含许多出价和许多联系人。联系人也可以是许多出价的投标人。

我想在报告和联系人之间建立一对多的关系(这可行,我可以使用联系人表中的外键来引用报告ID),报告和报告之间的一对多关系出价和联系人与出价之间的一对多关系 - 这两个失败并出现同样的错误:

sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) there is no unique constraint matching given keys for referenced table "contacts" [SQL: '\nCREATE TABLE bids (\n\tparent_id1 CHAR(32) NOT NULL, \n\tparent_id2 CHAR(32) NOT NULL, \n\tPRIMARY KEY (parent_id1, parent_id2), \n\tFOREIGN KEY(parent_id1) REFERENCES contacts (dcis_factor_code), \n\tFOREIGN KEY(parent_id2) REFERENCES contacts (dcis_factor_cntct_code)\n)\n\n']

以下是针对上述错误执行失败的出价和联系人的简化表格定义:

class BidDetail(Base):
    __tablename__ = "bids"
    parent_id1 = Column(TEXT, ForeignKey("contacts.dcis_factor_code"),
                        primary_key=True)
    parent_id2 = Column(TEXT, ForeignKey("contacts.dcis_factor_cntct_code"),
                        primary_key=True)

class Contact(Base):
    __tablename__ = 'contacts'

    dcis_factor_code = Column(CHAR(32), primary_key=True)
    dcis_factor_cntct_code = Column(CHAR(32), primary_key=True)
    childs = relationship("BidDetail", lazy="dynamic")

我不确定我做错了什么......一些帮助将不胜感激。

P.S。编辑以显示完整错误。

0 个答案:

没有答案