db_name.dump 然后 psql -U postgres db_n-6ren">
gpt4 book ai didi

postgresql - 使用 pg_dump 和 psql -U postgres db_name < ... 移动数据库导致 "ERROR: relation "table_name“不存在”

转载 作者:行者123 更新时间:2023-11-29 11:09:49 25 4
gpt4 key购买 nike

我将我的 PostgresQL 数据库从一个硬盘移动到另一个使用

pg_dump -U postgres db_name > db_name.dump

然后

psql -U postgres db_name < db_name.dump

我在两个实例中以相同的方式创建了数据库 db_name。在新数据库中,当我使用 JPA 查询(或 JDBC 查询)运行我的 Java 程序时,出现此错误:

"ERROR: relation "table1" does not exist"

查询是:

select count(0) from table1

我知道我已经建立了连接,因为如果我更改连接参数中的密码,我会收到错误消息。

出于某种原因,在新的 PostgresQL 实例中,它认为导入的模式中不存在 table1。

如果我将查询更改为

从 myschema.table1 中选择 count(0)

然后它提示权限:

"ERROR: permission denied for schema myschema"

为什么权限会不同?

表table1 存在于myschema 中,因为我可以在pgAdmin 工具中看到它。所有行都导入到新的 PostgresQL 实例中。

当我从 Java 执行查询时,pg_dump 和 psql 的组合产生了问题。

我需要做什么来解决这个问题?

最佳答案

您要迁移到同一版本的 PostgreSQL 吗?如果您使用 pg_dump 8.3 进行转储并尝试在 Postgresql 8.4 中恢复它,则可能会出现问题。无论如何,假设它是相同的版本,请尝试以下操作:

转储所有全局对象,例如用户和组(不知道您的转储中是否缺少它们):

pg_dumpall -g -U postgres > globals.sql

数据库转储模式:

pg_dump -Fp -s -v -f db-schema.sql -U postgres dbname

转储数据库内容:

pg_dump -Fc -v -f full.dump -U postgres dbname

现在恢复。

psql -f globals.sql
psql -f db-schema.sql dbname
pg_restore -a -d dbname -Fc full.dump

那是我的 0.02 美元。希望对您有所帮助。

关于postgresql - 使用 pg_dump 和 psql -U postgres db_name < ... 移动数据库导致 "ERROR: relation "table_name“不存在”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3518218/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com