在 bash 中运行以下命令时会抛出:
错误:关系“testschema.testtable”不存在。
命令行:
psql -h "localhost" -d "postgres" -U "postgres" -c "select * from TestSchema.TestTable;"
为什么它搜索关系而不是模式?如何设置要搜索的默认架构,以及可以将来自多个数据库的多个架构列表设置为默认列表?
在 bash 中运行以下命令时会抛出:
错误:关系“testschema.testtable”不存在。
命令行:
psql -h "localhost" -d "postgres" -U "postgres" -c "select * from TestSchema.TestTable;"
为什么它搜索关系而不是模式?如何设置要搜索的默认架构,以及可以将来自多个数据库的多个架构列表设置为默认列表?
为什么它搜索关系而不是模式?
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
语句永久设置。