Postgres drop table语法错误

时间:2014-01-10 18:18:12

标签: sql postgresql heroku

关于heroku的Postgres 9.3.2。

很确定我只是个白痴,但我似乎无法弄清楚为什么我的语法错了。

db=> \dt
              List of relations
 Schema |    Name    | Type  |     Owner      
--------+------------+-------+----------------
 public | device     | table | admin
 public | post       | table | admin
 public | user       | table | admin
(3 rows)

// why does this fail?
db=> drop table user; 
ERROR:  syntax error at or near "user"
LINE 1: drop table user;

// does the right thing
db=> drop table error; 
ERROR:  table "error" does not exist

2 个答案:

答案 0 :(得分:24)

User是Postgres中的reserved keyword。如果要引用名为 user 实际表,则必须将其放在引号中:

DROP TABLE "user";

如果可以提供帮助,可能最好不要使用保留关键字作为表名。它通常最终会在未来产生奇怪的问题。 Users可能是表格的更好名称。

答案 1 :(得分:0)

我有同样的错误。我的数据库名称非常唯一,而不是reserved keyword。仍然需要用引号将数据库名称包装起来

"<database_name>"

对于那些可能会忘记的人,总是会在语句末尾添加分号;,我总是会忘记。