我以极大的热情阅读了标题为 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
我没有设计这个数据库模式。我只是帮助迁移过程。在阅读有关 Unique Constraints 的文档时,似乎可以使用相同的名称,只要它在不同的表中即可。 http://www.postgresql.org/docs/8.3/static/ddl-constraints.html .我是不是误解了这个?
如有任何建议或指点,我们将不胜感激。
谢谢!
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"
。
关于postgresql - Unique Constraint 错误在 PostgreSQL 中创建表(从 MySQL 迁移),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5368289/