我试图从PostgreSQL数据库创建备份,但得到以下错误:pg_dump:未找到匹配的架构
我以root身份登录并运行命令
pg_dump -f db.dump --format=plain --schema=existing_schema --username=userx --host=localhost数据库
1.我用userx登录到psql并尝试\dt -这给了我信息,名为existing_schema的schema是public的。
1.我检查了\l以查看数据库名称。
1.密码正确,否则无法访问psql。
- Localhost是正确的,从运行进程中检查。也尝试了服务器的ip地址,但在这种情况下pg_admin给出了关于主机地址的错误。
输出\dl:
List of relations
Schema | Name | Type | Owner
--------+-------------------------------------+-------+-------
public | existing_schema | table | userx
字符串
6条答案
按热度按时间bis0qfac1#
您可以尝试使用反斜杠和双引号,如上述here。
字符串
6gpjuf902#
schema的名称是
public
。existing_schema
是模式public中的表的名称。pg_dump命令行并不清楚你想做什么。
如果你想从 schema
public
导出 * 所有表 *,你需要指定:字符串
如果你只想导出
existing_schema
表,那么你需要指定:型
u5i3ibmn3#
对于未来的谷歌人来说,在我的例子中,我的模式有点(“我的.schema”),解决这个问题的正确方法是转义:
字符串
ee7vknir4#
字符串
如果只想转储模式,
指
vd2z7a6w5#
在我的例子中,模式名是大写的,无论我怎么尝试(
-n MYSCHEMA
、-n "MYSCHEMA"
、-n "\"MYSCHEMA\""
),它都不起作用,直到我在数据库中将模式重命名为“myschema”,然后我可以转储所有的-n MYSCHEMA
、-n "MYSCHEMA"
和-n "\"MYSCHEMA\""
。看起来pg_dump在内部使用小写,这意味着它没有引用命令行中给定的模式名称。
然而,当使用
-n """MYSCHEMA"""
调用pg_dump时,它可以工作。然而,在添加表名时,选项-n不再适用。如果schema和table-name包含大写字母,我使用了以下方法:
pg_dump -f file.txt -t \"MySchema\".\"MyTable\"
的值。“qybjjes16#
这对我很有效--schema“\“your_schema"”