Postgres drop table语法错误

Der*_*rek 19 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
Run Code Online (Sandbox Code Playgroud)

Mik*_*sen 27

User是Postgres中的保留关键字.如果要引用名为user实际表,则必须将其放在引号中:

DROP TABLE "user";

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


小智 7

我有同样的错误。我的数据库名称非常独特,而不是reserved keyword. 仍需要将数据库名称用引号引起来

"<database_name>"

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