【问题标题】:Postgres drop table syntax errorPostgres 删除表语法错误
【发布时间】:2014-01-29 20:26:05
【问题描述】:

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

【问题讨论】:

    标签: sql postgresql heroku


    【解决方案1】:

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

    DROP TABLE "user";

    如果可以的话,最好不要使用保留关键字作为表名。它通常最终会在路上产生奇怪的问题。 Users 可能是一个更好的表名称。

    【讨论】:

      【解决方案2】:

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

      "<database_name>"

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

      【讨论】:

        猜你喜欢
        • 2013-03-04
        • 2016-01-14
        • 2012-08-07
        • 1970-01-01
        • 2017-05-22
        • 1970-01-01
        • 1970-01-01
        • 2011-09-10
        • 1970-01-01
        相关资源
        最近更新 更多