簡體   English   中英

為什么在引用主鍵時出現“非唯一”錯誤?

[英]Why am I getting a 'not unique' error when referencing a primary key?

我有兩種型號-

站:

class Station(db.Model):
    """Measurement station"""
    __tablename__ = "station"

    reference = db.Column(db.Text, nullable=False, primary_key=True)
    name = db.Column(db.Text, nullable=False, primary_key=True)
    status = db.Column(db.Text)


    river_analyses = db.relationship("RiverAnalysis")

RiverAnalysis:

class RiverAnalysis(db.Model):
    __tablename__ = "river_analysis"
    id = db.Column(db.Integer, nullable=False, primary_key=True)
    reference = db.Column(db.Text, db.ForeignKey("station.reference"), nullable=False)

    station_ref = db.relationship("Station", foreign_keys=reference)

當我嘗試使用此遷移代碼運行flask db upgrade

def upgrade():
    # ### commands auto generated by Alembic - please adjust! ###
    op.add_column('river_analysis', sa.Column('reference', sa.Text(), nullable=False))
    op.create_foreign_key(None, 'river_analysis', 'station', ['reference'], ['reference'])

我收到此錯誤: (psycopg2.ProgrammingError) there is no unique constraint matching given keys for referenced table "station"

即使station.referenceStation的主鍵,我為什么也得到這個?

感謝您的任何幫助,您可以提供。

單獨reference不是您的主鍵,而是對(reference, name) 為了引用該鍵,您需要一個復合外鍵約束

class RiverAnalysis(db.Model):
    __tablename__ = "river_analysis"
    id = db.Column(db.Integer, nullable=False, primary_key=True)
    reference = db.Column(db.Text, nullable=False)
    name = db.Column(db.Text, nullable=False)

    __table_args__ = (
        db.ForeignKeyConstraint(
            [reference, name],
            ["station.reference", "station.name"]),
    )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM