我使用以下命令将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中选择计数(0)
然后它会抱怨权限问题:
"ERROR: permission denied for schema myschema"
为什么权限会有所不同?
表table1存在于我的模式中,因为我可以在pgAdmin工具中看到它。所有行都被导入到新的PostgresQL实例中。
当我从Java执行查询时,pg_dump和psql的组合产生了一个问题。
我需要做些什么来解决这个问题?
提前谢谢。
发布于 2010-08-19 13:26:47
您是否要迁移到相同版本的PostgreSQL?如果您使用PostgreSQL8.3进行转储并尝试在pg_dump 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美元。希望能有所帮助。
发布于 2016-11-07 19:48:55
我遇到了这个问题。然后我意识到我忘记安装postgis
扩展了。
别忘了安装你使用的扩展。
发布于 2010-08-22 00:45:05
我可以通过将数据库权限更改为public CONNECT以及public和postgres = USAGE和CREATE的模式权限来解决此问题。
我的备份脚本显然没有保留特权,至少在从8.3迁移到8.4时没有。
https://stackoverflow.com/questions/3518218
复制相似问题