当前位置: 首页 > 知识库问答 >
问题:

没有唯一的约束匹配引用表“用户”(PostgreSQL)的给定键

董高朗
2023-03-14

所以我得到了一个错误,没有唯一的约束匹配我的一个表的给定键。我有两个表:用户和项目,其中我们有一个多对一的关系(一个用户有多个项目)。我用炼金术来做这一切:

    class ItemModel(db.Model):
        __tablename__ = 'items'

        id = db.Column(db.Integer, primary_key=True)
        title = db.Column(db.String(40))
        description = db.Column(db.String(80))
        price = db.Column(db.Float(precision=2))
        emailAddress = db.Column(db.String(40), db.ForeignKey('users.email'))

    class UserModel(db.Model):

        __tablename__ = 'users'

        id = db.Column(db.Integer)
        email = db.Column(db.String(40), primary_key=True)
        name = db.Column(db.String(40))
        last_name = db.Column(db.String(40))

        items = db.relationship('ItemModel', lazy="dynamic")

要创建表,我在我的应用程序中有以下语句。py':

    @app.before_first_request
    def create_database():
        print("Creating tables.")
        db.create_all()

错误是:没有唯一的约束匹配引用表用户的给定键。

我不确定哪里出错了,因为我在ItemModel中有一个外键与UserModel中的主键匹配。欢迎任何建议/提示!

谢谢

共有3个答案

萧英光
2023-03-14

以下是我如何解决你的餐桌订购问题:

table_names = ['users',
               'items']

for table in table_names:
    t = db.Model.metadata.tables[table]
    t.create(bind=engine)
壤驷兴朝
2023-03-14

对于最终出现在这里但其代码结构不同的人来说,假设每个实体都在自己的文件中,请在调用之前检查导入顺序。创建_all()方法。

罗智刚
2023-03-14

我实际上做到了这一点——正如Erwin Brandstetter在上面提到的,发生错误是因为需要先创建用户表。在我的例子中,我需要根据Postgres本身的外键/主键关系来更新用户表。

 类似资料:
  • 我正在为班级注册建立一个数据库,但我在“注册”表上遇到了问题。我需要将分区中的所有主键传递到注册中,但我还想传递一个附加键(“sectionNumber”)。然而,我不想让“sectionNumber”成为“Sections”主键的一部分,因为我不想将sectionNumber传递到每个我有外键的表中,这些外键来自“Sections”有人对如何解决这个问题有什么建议吗?我一直得到下面的错误。

  • 问题内容: 我有一个表定义: 我正在尝试创建失败的表 错误是: 我不确定如何解决此问题。 问题答案: 我认为您正在寻找两个单独的外键:

  • 我试着用这些代码使用postgresql创建表,但人们一直说,并没有唯一的约束匹配引用表的给定键。当我试图创建表、节和评估时,出现了这个消息。 请帮帮我。 )我更改了create语句的顺序,并在表中添加了unique key,但仍然不起作用。

  • 我在创建一个包含外键的表时遇到问题,该外键来自另一个包含两个主键的表。 以下是表格: 无法创建表risk_final并给我错误: 错误:没有唯一的约束匹配引用表"names_types"的给定键 我该怎么解决呢?

  • PostgreSQL/PGAdmin4错误:没有唯一的约束匹配引用表的给定键 这是我试图编码到PGAdmin4/Postgresql:http://i.imgur.com/xPEu8Sh.jpg的模式 我能够转换所有表格,除了“资格证书”。 我尝试处理以下查询: 我收到以下消息:错误:没有唯一的约束匹配引用表“section”的给定键 这些是我在表格部分中介绍的外国和主要内容 普凯:我,伊姆格。c

  • 我创建了一个表(团队),它有一个由id、项目id和用户id组成的复合主键。每个主键引用除id之外的其他表中的一个键。现在我想添加一个键(团队id),该键引用团队自己的id,因为我想满足子团队的需求,该团队id将包含父团队的id。 我遇到了一个错误:“没有唯一的约束匹配引用表“team”的给定键。”。 复合主键中每个键的每个可能组合都是团队的唯一约束,我理解错了吗?我错过了什么?