我把我的PostgresQL数据库从一个硬盘转移到另一个硬盘

pg_dump -U postgres db_name > db_name.dump

然后

psql -U postgres db_name < db_name.dump

在这两个实例中,我以相同的方式创建了数据库db_名称.在新数据库中,当我使用JPA查询(或JDBC查询)运行Java程序时,我会遇到以下错误:

"ERROR: relation "table1" does not exist"

问题是:

select count(0) from table1

我知道我有一个连接,因为如果我在连接参数中更改密码,就会出现错误.

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

如果我将查询更改为

从myschema中 Select 计数(0).表1

然后它抱怨权限:

"ERROR: permission denied for schema myschema"

为什么权限会有所不同?

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

当我从Java进行查询时,pg_dump和psql的组合产生了一个问题.

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

提前谢谢.

推荐答案

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

转储所有全局对象,例如用户和组(不知道它们是否在转储中丢失):

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相关问答推荐

Postgres SQL执行加入

如何在Windows中安装sql for golang

使用PGx在围棋中执行多条SQL语句

查找行中的最小值

Supabase 数据库大小问题

如何计算过滤器中的百分比

使用 pgx.CopyFrom 将 csv 数据批量插入到 postgres 数据库中

Postgresql:创建默认表空间的视图和使用?

在 KnexJS 中插入

并行取消嵌套多个数组

PostgreSQL 中的 DATEADD 等效项

PostgreSQL 在 mySQL 中的 date_trunc

返回 NULL 的空数组的 array_length()

在PostgreSQL中 Select 数组列的总和

Postgis 中 2 点之间的距离,单位为 4326 米

与 Oracle 的 CONNECT BY ... START WITH 等效的 PostgreSQL 语法是什么?

SQL:子查询的列太多

在布尔字段上添加索引

GRANT SELECT 特权使用一个语句对所有序列

Django 中的唯一模型字段和区分大小写(postgres)