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

pg_dump报错‘no matching schemas were found’,求无需指定schema的备份方案

PostgreSQL pg_dump备份问题分析与解决

错误原因

你执行的命令里-n 6是指定要备份名为"6"的schema,但从\dn的输出能看到,你的数据库里只有public这一个schema,所以pg_dump找不到匹配的schema,抛出no matching schemas were found错误。

而添加--schema public后,-n和--schema是同一参数的长短写法,多次指定会累加要备份的schema列表,此时pg_dump会尝试备份"6"(不存在)和"public"(存在),因为有有效的schema存在,所以命令能执行成功,但这其实偏离了你原本的需求。

符合需求的正确备份命令

你的核心需求是避免指定schema,保证备份包含所有依赖对象,能在干净数据库单独恢复,正确做法是直接执行全库备份,不需要添加任何-n或--schema参数:

pg_dump -v -f sds.bak -Fc --quote-all-identifiers -h dbserver.host.com -p 5432 -U postgres -d "database-name"

说明

不带-n/--schema参数时,pg_dump会默认备份数据库内所有schema的对象,包括系统级的依赖对象(比如公共函数、数据类型等),完全符合PostgreSQL官方文档的建议——避免单独指定schema导致依赖缺失,确保备份可以直接恢复到干净的数据库中。

额外说明

如果你的数据库确实只有public一个schema,备份public看似能满足需求,但一旦后续新增其他schema,带--schema public的命令就会漏掉这些schema的对象。因此全库备份是更稳妥、符合你原始需求的选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 21:37:29