You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pg_restore为何忽略指定dbname?Docker PostgreSQL迁移至远程异常

问题原因及解决办法

原因分析

你使用了--create参数,该参数会让pg_restore优先读取备份文件中存储的原始数据库名称(即本地的postgres库)来创建数据库。此时你指定的--dbname参数仅用于连接远程服务器时的初始数据库(比如远程默认的postgres库),而非要创建的目标库名,因此会忽略你设置的proddb。

解决方法

方法一:使用--new-dbname指定目标库名(推荐)

保留--create参数,同时添加--new-dbname=proddb来覆盖备份中的原始库名,--dbname指定远程的默认postgres库用于初始连接:

pg_dump --format=custom --dbname=postgresql://postgres:postgres@localhost:5432/postgres | PGPASSWORD=pa$$word pg_restore -v --clean --create --host=production.local --username=swasher --dbname=postgres --new-dbname=proddb

方法二:手动创建目标库后直接还原

  1. 先在远程服务器创建proddb库:
PGPASSWORD=pa$$word createdb -h production.local -U swasher proddb
  1. 移除--create参数,直接连接到proddb库还原数据:
pg_dump --format=custom --dbname=postgresql://postgres:postgres@localhost:5432/postgres | PGPASSWORD=pa$$word pg_restore -v --clean --host=production.local --username=swasher --dbname=proddb

内容的提问来源于stack exchange,提问作者swasher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 15:32:42