在bash中运行以下命令时抛出:
错误:关系“testschema.testtable”不存在。
命令行:
psql -h "localhost" -d "postgres" -U "postgres" -c "select * from TestSchema.TestTable;"
为什么搜索关系而不是模式? 如何设置要搜索的默认模式,是否可以将多个模式的多个模式列表设置为默认列表?
答案 0 :(得分:5)
为什么要搜索关系而不是模式?
TestSchema.TestTable
是关系(表格)。我是一个完全限定的表名。
它找不到它的原因很可能是因为你使用双引号创建了模式和表:
create table "TestSchema"."TestTable" (...)
使名称区分大小写,并强制您始终使用引号来限定名称。有关“分隔标识符”(又名“引用标识符):
的详细信息,请参阅手册http://www.postgresql.org/docs/9.2/static/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS
如何设置要搜索的默认架构
请参阅“set schema”语句:http://www.postgresql.org/docs/current/static/sql-set.html
您还可以使用ALTER USER
命令定义默认架构。
我可以将多个数据库中的多个模式列表设置为默认列表
是,设置search_path配置变量:http://www.postgresql.org/docs/current/static/runtime-config-client.html#GUC-SEARCH-PATH
也可以通过ALTER USER
声明永久设置。