访问关联表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
- 但是那样会使用那些可怕的双引号。
我正在处理一个使用 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
- 但是那样会使用那些可怕的双引号。