Во-первых, не используйте зарезервированные слова для идентификаторов. Достаточно просто изменить это значение на что-то вроде Users
.
Во-вторых, Postgres по умолчанию настаивает на том, что идентификаторы нечувствительны к регистру, если их вводить в нижнем регистре. Итак, User
и USER
и user
- это одно и то же - и все они конфликтуют с ключевым словом / зарезервированным словом.
Все правила об идентификаторах довольно хорошо объяснены в документация .
Вы можете обойти это, настаивая на чувствительности к регистру, избегая имени:
CREATE TABLE "User" ( . . .
Но я категорически не одобряю это. Существует множество способов создания идентификатора без повторного использования нескольких сотен зарезервированных слов. Просто будьте более креативны в своих именах.