【问题标题】:PostgreSQL/pgAdmin4 ERROR: there is no unique constraint matching given keys for referenced table "index"PostgreSQL/pgAdmin4 错误:引用表“索引”的给定键没有唯一约束匹配
【发布时间】:2020-12-18 10:08:07
【问题描述】:

我正在尝试将我的 MySQL 设计转换为 PostgreSQL,但是当我尝试创建表“索引”时:

CREATE TABLE  "model1"."index" (
  "id_index" INT GENERATED ALWAYS AS IDENTITY ,
  "index_name" VARCHAR(5) NOT NULL,
  "index_type_id_index_type" INT  NOT NULL,
  "index_provider_id_index_provider" INT  NOT NULL,
  "miseq" VARCHAR(45) NOT NULL,
  "nextseq" VARCHAR(45) NOT NULL,
  PRIMARY KEY ("id_index"),
  CONSTRAINT "fk_index_index_type"
    FOREIGN KEY ("index_type_id_index_type")
    REFERENCES "model1"."index_type" ("id_index_type")
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT "fk_index_index_provider"
    FOREIGN KEY ("index_provider_id_index_provider")
    REFERENCES "model1"."index_provider" ("id_index_provider")
    ON DELETE NO ACTION
    ON UPDATE NO ACTION);

我收到了这个错误:错误:没有唯一约束匹配给定键的引用表“索引”。

包含外键的两个表是在“索引”表之前创建的:

CREATE TABLE  "model1"."index_type" (
  "id_index_type" INT GENERATED ALWAYS AS IDENTITY ,
  "name" VARCHAR(3) NOT NULL,
  PRIMARY KEY ("id_index_type"));

CREATE TABLE  "model1"."index_provider" (
  "id_index_provider" INT GENERATED ALWAYS AS IDENTITY ,
  "name" VARCHAR(40) NOT NULL,
  PRIMARY KEY ("id_index_provider"));

【问题讨论】:

  • 您正尝试在其他地方创建引用 "index" 表的外键。您显示的代码不会导致此错误。 dbfiddle.uk/…
  • 可能是中间表。中间表在 PostgreSQL 中的工作方式不同吗?
  • 我不知道应该是什么“中间”表。你的意思是“临时”表吗?但是您需要向我们展示您的完整代码,以帮助您找到该错误的根本原因。您显示的代码没有问题
  • 我用一个表来表示 N:M 关系。错误在此表中,现在已解决。

标签: postgresql foreign-keys constraints unique


【解决方案1】:

解决了。正如@a_horse_with_no_name 所建议的,错误在另一个表中。

【讨论】:

    猜你喜欢
    • 2016-08-13
    • 1970-01-01
    • 1970-01-01
    • 2017-08-26
    • 2012-08-11
    • 2021-06-24
    • 2014-12-23
    相关资源
    最近更新 更多