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

Невозможно создать таблицу базы данных с именем "пользователь" в PostgreSQL

Кажется, PostgreSQL не позволяет создать таблицу базы данных с именем "пользователь". Но MySQL позволит создать такую ​​таблицу.

Это потому, что это ключевое слово? Но Hibernate не может идентифицировать какую-либо проблему (даже если мы устанавливаем PostgreSQLDialect).

4b9b3361

Ответ 1

user является зарезервированным словом, и обычно не рекомендуется использовать зарезервированные слова для идентификаторов (таблицы, столбцы).

Если вы настаиваете на этом, вам нужно поместить имя таблицы в двойные кавычки:

create table "user" (...);

Но тогда вы всегда должны использовать двойные кавычки при ссылке на таблицу. Кроме того, имя таблицы затем учитывает регистр. "user" - это другое имя таблицы, чем "user".

Если вы хотите сэкономить много проблем, используйте другое имя. users, user_account,...

Более подробную информацию о цитируемых идентификаторах можно найти в руководстве: http://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS

Ответ 2

Можно указать tablename с JPA со следующим синтаксисом:

@Table(name="\"user\"")

Ответ 3

У нас была такая же проблема некоторое время назад, и мы просто изменили имя таблицы с user на app_user. Благодаря использованию Hibernate/JPA. Мы думали, что так будет проще. Надеюсь, что это небольшое исправление поможет кому-то еще.