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

Cam*_*ins 4 postgresql constraints unique database-migration

我非常热情地阅读了一篇名为" 从Linux迁移到PostgreSQL(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")
);
Run Code Online (Sandbox Code Playgroud)

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

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

我没有设计这个数据库架构.我只是在帮助迁移过程.阅读有关唯一约束的文档时,只要它位于不同的表中,就可以使用相同的名称.http://www.postgresql.org/docs/8.3/static/ddl-constraints.html.我误解了这个吗?

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

谢谢!

PS:感谢/sf/users/4136121//sf/users/1857411/让我这么远;-)

Mik*_*ll' 5

阅读有关唯一约束的文档时,只要它位于不同的表中,就可以使用相同的名称.

我不确定你正在阅读的文档的哪一部分,但你误解了它.约束名称必须是全局唯一的.所以你可以随心所欲地拥有这些UNIQUE ("user_id", "key"),但你无法为每一个命名"user_id".