PostgreSQL 9.6:为什么此pg_restore命令对我有效,但对我的同事无效?

问题描述 投票:0回答:1

我们已经配备了全新的编码器。就像我们所做的那样,我们希望他能拥有一个本地版本的PostgreSQL数据库。

按如下方式转储生产数据库没有问题:

pg_dump -U username -W -F c dbname > backups/2020_04_24_18_49.db

还原到我在本地(运行Ubuntu 18.04)上创建的测试数据库,如下所示,没有问题:

pg_restore -d dbname 2020_04_24_18_49.db

在我的同事的本地上运行相同的命令(运行macOS,不确定版本)确实not正常工作。随之而来的是很多很多错误。第一个是这个:

COPY failed for table "TableName": ERROR: new row for relation "TableName" violates check constraint "whitespaceRules_TableName_columnName"

我已确保我们正在运行相同版本的PostgreSQL。我确保存在正确的角色。我试过转储不同的格式。我已经尝试了很多东西。没有一个工作。

请帮助?

((应该注意,这不是唯一一个运行macOS的同事,所以不应该这样。)我想)

Edit:根据注释的要求,这里是检查约束的定义:

CHECK (("emailAddress" = regexp_replace("emailAddress", '\s+'::text, ''::text, 'g'::text)))
postgresql postgresql-9.6
1个回答
0
投票

[好的,因此将pg_dump--create标志一起使用就可以了。我正在猜测@Borgi和@Laurenz Albe在其注释中指出的任何配置/编码/等不匹配之处都是通过将数据库创建作为还原过程的一部分来处理的。

无论哪种方式,非常感谢大家的帮助!

© www.soinside.com 2019 - 2024. All rights reserved.