加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在PostgreSQL中创建表的唯一约束错误(从MySQL迁移)

发布时间:2020-12-13 16:05:25 所属栏目:百科 来源:网络整理
导读:我非常热情地读了一个名为 Migrate from MySQL to PostgreSQL on Linux (Kubuntu)的问题.“星球大战”的主题让它变得更加有趣.但是我遇到了PostgreSQL中有关Unique Constraints的问题. 我密切关注上面的帖子,使用sqlt创建PostgreSQL DDL.思考过程首先创建模
我非常热情地读了一个名为 Migrate from MySQL to PostgreSQL on Linux (Kubuntu)的问题.“星球大战”的主题让它变得更加有趣.但是我遇到了PostgreSQL中有关Unique Constraints的问题.

我密切关注上面的帖子,使用sqlt创建PostgreSQL DDL.思考过程首先创建模式/表,然后导入数据.但是我的72个表中有57个使用CONSTRAINT“userid”UNIQUE(“user_id”,“key”)

以下是其中一个表的示例:

CREATE TABLE "account_otherserviceinfo" (
    "id" serial NOT NULL,"user_id" bigint NOT NULL,"key" character varying(50) NOT NULL,"value" text NOT NULL,PRIMARY KEY ("id"),CONSTRAINT "user_id" UNIQUE ("user_id","key")
);

当我使用pgadmin3中的查询工具将这些表复制到我的PostgreSQL数据库时,我收到以下错误:

错误:关系“user_id”已存在
SQL状态:42P07

我没有设计这个数据库架构.我只是在帮助迁移过程.阅读有关唯一约束的文档时,只要它位于不同的表中,就可以使用相同的名称.我错误解释了这个吗?

任何建议或指示将不胜感激.

谢谢!

PS:感谢https://stackoverflow.com/users/59087/dave-jarvis和https://stackoverflow.com/users/26534/michael-trausch让我这么远;-)

解决方法

When reading the documentation on
Unique Constraints,it appears that it
is Ok to use the same name as long as
it’s in a different table.

我不确定你正在阅读的文档的哪一部分,但你误解了它.约束名称必须是全局唯一的.因此,你可以拥有任意数量的UNIQUE(“user_id”,“key”),但你不能将它们中的每一个命名为“user_id”.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读