postgresql - 无法使用不同的用户名从 pg_dump 恢复 psql 数据库
问题描述
我需要使用 postgres username1 从 computer1 转储一个 postgres 数据库,然后使用 postgres username2 在 computer2 上恢复它。我一直遇到看起来备份文件想要使用 username1 的错误:
当我在computer2上运行它时:
psql dbname < backupname.pgsql
我收到此错误:
ERROR: role "username1" does not exist
我试过了:
// Dumping from computer1:
pg_dump dbname > backupname.sql
pg_dump dbname > backupname.pgsql
pg_dump -U username1 dbname -N topology -T spacial_ref_sys > backupname.pgsql
// Restoring on computer2:
psql dbname < backupname.pgsql
是需要修改转储还是恢复才能克服这个问题?
解决方案
问题在于倾销。根据这篇文章的见解,我能够使用以下方法解决这个问题:
// On Computer1
pg_dump dbname -O -x > backupname.sql
// On Computer2
psql dbname < backupname.sql
使用的选项标志pg_dump
是:
-O <-- No owner
Do not output commands to set ownership of objects to match the original database
-x <-- No privileges
Prevent dumping of access privileges (grant/revoke commands)
有关选项标志的更多信息,请参阅pg_dump 的 PostgreSQL 文档。
推荐阅读
- java - 问题编译项目spring“无法在任何已知服务器上执行请求”
- sql - 使用事务插入父子记录[执行成功但未插入记录]
- android - 单击片段中回收器适配器中的项目时,显示自定义弹出窗口
- javascript - 从 url 中提取音频片段并使用纯 Web Audio API 播放
- python - Pandas:具有重复组到多列的列
- php - 如何在 Laravel 的资源目录中存储图像
- dart - 如何在颤振中调用 URL https://key:secret@payment.api/payments/transactionid/update
- intellij-plugin - 从 IntelliJ 插件自动启用自定义检查
- php - 将数组传递给函数 PHP
- php - PHP数组将点表示的键解析为多维数组