加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

postgresql – 使用pg_dump和psql -U postgres数据库移动数据库d

发布时间:2020-12-13 16:29:11 所属栏目:百科 来源:网络整理
导读:我将PostgresQL数据库从一个硬盘驱动器移动到另一个硬盘驱动器 pg_dump -U postgres db_name db_name.dump 接着 psql -U postgres db_name db_name.dump 我在两个实例中以相同的方式创建了数据库db_name.在新数据库中,当我使用JPA查询(或JDBC查询)运行我的Ja
我将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"

为什么权限不同?

表格1存在于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美元.希望它有帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读