Postgresql - pg_dump -未找到匹配的架构

knpiaxh1  于 2023-11-18  发布在  PostgreSQL
关注(0)|答案(6)|浏览(150)

我试图从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。

  1. Localhost是正确的,从运行进程中检查。也尝试了服务器的ip地址,但在这种情况下pg_admin给出了关于主机地址的错误。
    输出\dl:
List of relations

Schema |                Name                 | Type  | Owner
--------+-------------------------------------+-------+-------
 public | existing_schema                    | table | userx

字符串

bis0qfac

bis0qfac1#

您可以尝试使用反斜杠和双引号,如上述here

sudo -u postgres pg_dump -v Database_Name -t "\"Table_Name\""

字符串

6gpjuf90

6gpjuf902#

schema的名称是public

existing_schema是模式public中的表的名称。
pg_dump命令行并不清楚你想做什么。
如果你想从 schemapublic导出 * 所有表 *,你需要指定:

--schema=public

字符串
如果你只想导出existing_schema表,那么你需要指定:

--table=existing_schema

u5i3ibmn

u5i3ibmn3#

对于未来的谷歌人来说,在我的例子中,我的模式有点(“我的.schema”),解决这个问题的正确方法是转义:

pg_dump -U postgres -d mydatabase --schema \"my.schema\"

字符串

ee7vknir

ee7vknir4#

\dn list out all the schema in the database

字符串
如果只想转储模式,

vd2z7a6w

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\"的值。“

qybjjes1

qybjjes16#

这对我很有效--schema“\“your_schema"”

相关问题