我正在开发一个使用postgresql数据库的现有项目。这是我第一次使用postgresql。
我有一个完全阻止我的主要问题。
在数据库创建脚本中,我有以下几行:
CREATE TABLE "TA_cat_group" (
cat character varying NOT NULL,
group character varying NOT NULL
);
当我使用终端并将自己连接到psql时,我可以通过\d
来描述我的数据库:
List of relations
Schema | Name | Type | Owner
--------+-------------------------+----------+--------
public | TA_cat_group | table | vit
public | cat | table | vit
...
然后我可以\d cat
来访问猫表的描述。
但是,如果我\d TA_cat_group
,则会显示以下行:
Did not find any relation named "TA_cat_group".
由于这个问题,我无法在这张桌子上做出请求......这可能是什么原因?
PS:之前我做了\c vit
,所以我在正确的数据库下连接,这似乎不是我的问题的原因。此外,这个架构应该是公开的......
答案 0 :(得分:2)
由于双引号,您的表名现在为敏感。 "TA_cat_group"
与TA_cat_group
的名称不同。
您需要使用
\d "TA_cat_group"
但我建议永远在SQL语句中使用双引号,以避免必须处理区分大小写的名称。
手册中的更多细节:
http://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS
不相关,但是:您不能将group
用作列名而不将其括在双引号中,因为它是保留关键字。您问题中的示例create table
将导致:
错误:“group”或附近的语法错误
避免该错误的唯一方法是使用"group"
而不是group
- 但是这会使用那些可怕的双引号。