Подтвердить что ты не робот

Ошибка синтаксиса таблицы Postgres

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
4b9b3361

Ответ 1

User является зарезервированным ключевым словом в Postgres. Вы должны будете поместить его в кавычки, если хотите обратиться к фактической таблице с именем пользователя:

DROP TABLE "user";

Наверное, лучше избегать использования зарезервированных ключевых слов в качестве имен таблиц, если вы можете им помочь. Обычно это заканчивается созданием странных проблем в будущем. Users может быть лучшим именем для таблицы.