DrS*_*ker 29 database postgresql
我需要将postgres数据库从一个服务器复制到另一个服务器,但我拥有的凭据没有锁定数据库的权限,因此pg_dump失败.我对相关数据库有完整的读/更新/插入权限.
如何制作此数据库的副本?我并不担心不一致(它是开发服务器上的一个小型数据库,因此提取过程中出现不一致的风险很小)
[编辑]完整错误:
$ pg_dump --username=bob mydatabase > /tmp/dump.sql
pg_dump: SQL command failed
pg_dump: Error message from server: ERROR: permission denied for relation sl_node
pg_dump: The command was: LOCK TABLE _replication.sl_node IN ACCESS SHARE MODE
Run Code Online (Sandbox Code Playgroud)
a_h*_*ame 19
错误:关系sl_node的权限被拒绝
这是你真正的问题.
确保用户bob具有以下SELECT权限_replication.sl_node.这有什么机会是Slony系统表还是什么?
mam*_*aye 10
这对我有用
sudo -u postgres pg_dump -Fc -c db_name > file_name.pgdump
Run Code Online (Sandbox Code Playgroud)
然后创建一个DB并运行pg_restore:
sudo -u postgres /usr/local/pgsql/bin/pg_restore -U postgres -d db_name -v file_name.pgdump
Run Code Online (Sandbox Code Playgroud)
pg_dump不会锁定整个数据库,但它会在要转储的所有表上获得显式锁定。此锁以“访问共享模式”获取,这与 SELECT 语句所需的锁级别相同:它旨在防止其中一个表在它决定转储哪些表然后获取数据之间被删除。
所以听起来您的问题实际上可能是它试图转储您没有权限的表?PostgreSQL 没有数据库级别的读取/更新/插入权限,所以也许您只是在某处缺少从单个表中选择权限...
正如 Frank H. 建议的那样,发布完整的错误消息,我们将尝试帮助解码。
| 归档时间: |
|
| 查看次数: |
37094 次 |
| 最近记录: |