微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我非常热情地读了一个名为 Migrate from MySQL to PostgreSQL on Linux (Kubuntu)的问题.“星球大战”的主题让它变得更加有趣.但是我遇到了Postgre@R_502_6308@中有关Unique Constraints的问题.

我密切关注上面的帖子,使用sqlt创建Postgre@R_502_6308@ 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中的查询工具将这些表复制到我的Postgre@R_502_6308@数据库时,我收到以下错误

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

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

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

谢谢!

PS:感谢https://stackoverflow.com/users/59087/dave-jarvishttps://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”.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐