在bash中使用psql命令查询postgresql会抛出错误:关系“testschema.testtable”不存在

时间:2013-02-24 10:50:57

标签: postgresql psql

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

  

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

命令行:

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

为什么搜索关系而不是模式? 如何设置要搜索的默认模式,是否可以将多个模式的多个模式列表设置为默认列表?

1 个答案:

答案 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声明永久设置。