0

在 bash 中运行以下命令时会抛出:

错误:关系“testschema.testtable”不存在。

命令行:

psql -h "localhost" -d "postgres" -U "postgres" -c "select * from TestSchema.TestTable;"

为什么它搜索关系而不是模式?如何设置要搜索的默认架构,以及可以将来自多个数据库的多个架构列表设置为默认列表?

4

1 回答 1

5

为什么它搜索关系而不是模式?

TestSchema.TestTable 一个关系(表)。I 是完全限定的表名。

找不到它的原因很可能是因为您使用双引号创建了架构和表:

create table "TestSchema"."TestTable" (...)

这使名称区分大小写并强制您始终使用引号来限定名称。有关“分隔标识符”(又名“带引号的标识符)”的详细信息,请参阅手册:

https://www.postgresql.org/docs/current/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS

如何设置要搜索的默认架构

请参阅“设置架构”语句:https ://www.postgresql.org/docs/current/sql-set.html

您还可以使用该ALTER USER命令定义默认模式。

我可以将来自多个数据库的多个模式列表设置为默认列表吗

是的,设置 search_path 配置变量:http ://www.postgresql.org/docs/current/static/runtime-config-client.html#GUC-SEARCH-PATH

这也可以通过ALTER USER语句永久设置。

于 2013-02-24T11:35:02.353 回答