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



我试图从PostgreSQL数据库创建备份,但收到以下错误:pg_dump:找不到匹配的架构

我以root用户身份登录并运行命令

pg_dump-f db.dump--format=plain--schema=existing_schema--username=userx--host=localhost数据库名称

  1. 我使用userx登录到psql并尝试\dt-这给了我信息,名称为existing_schema的架构是公共的
  2. 我检查了一下数据库名称是否就是数据库名称
  3. 密码是正确的,否则我无法访问psql
  4. Localhost是正确的,已从正在运行的进程中检查。也尝试了服务器的ip地址,但在本例中,pg_admin给出了有关主机地址的错误

\dl:的输出

关系列表架构|名称|类型|所有者--------+-------------------------------------+-------+-------public|existing_schema|table|userx

您可以尝试使用反斜杠和双引号,如这里所述。

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

模式的名称为public

existing_schema是架构公用中的表的名称。

从你的pg_dump命令行还不清楚你想做什么。

如果要从架构public导出所有表,则需要指定:

--schema=public

如果只想导出existing_schema,则需要指定:

--table=existing_schema

对于未来的谷歌用户,在我的情况下,我的模式有点("my.schema"),解决这个问题的正确方法是转义:

pg_dump -U postgres -d mydatabase --schema "my.schema"
dn list out all the schema in the database 

如果只想转储模式,

参考

在我的情况下,模式名称是大写的,无论我尝试了什么(-n MYSCHEMA-n "MYSCHEMA"-n ""MYSCHEMA""),它都不起作用,直到我将模式重命名为";myschema";数据库中。然后我可以使用所有的-n MYSCHEMA-n "MYSCHEMA"-n ""MYSCHEMA""进行转储。

看起来pg_dump内部使用小写,这意味着它没有引用命令行中给出的模式名称。

但是,当使用-n """MYSCHEMA"""调用pg_dump时,它可以工作。

当添加一个表名时,选项-n不再适用于我。如果模式和表名包含大写字母,我使用这个:

pg_dump -f file.txt -t "MySchema"."MyTable"

最新更新