关于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
答案 0 :(得分:24)
User
是Postgres中的reserved keyword。如果要引用名为 user 的实际表,则必须将其放在引号中:
DROP TABLE "user";
如果可以提供帮助,可能最好不要使用保留关键字作为表名。它通常最终会在未来产生奇怪的问题。 Users
可能是表格的更好名称。
答案 1 :(得分:0)
我有同样的错误。我的数据库名称非常唯一,而不是reserved keyword
。仍然需要用引号将数据库名称包装起来
"<database_name>"
对于那些可能会忘记的人,总是会在语句末尾添加分号;
,我总是会忘记。