访问关联表postgresql

Accessing associative tables postgresql

我正在处理一个使用 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 以访问猫的描述 table。

但是,如果我这样做 \d TA_cat_group,则会出现以下行:

 Did not find any relation named "TA_cat_group".

由于这个问题,我无法对此 table 执行请求...这可能是什么原因?

PS: 我之前做了一个\c vit,所以我在正确的数据库下连接,这似乎不是我的问题的原因。此外,这个模式应该是 public...

由于双引号,您的 table 名称现在区分大小写 "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 将导致:

ERROR: syntax error at or near "group"

避免该错误的唯一方法是使用 "group" 而不是 group - 但是那样会使用那些可怕的双引号。