无法在PostgreSQL中创建名为“user”的数据库表

问题描述 投票:55回答:3

似乎PostgreSQL不允许创建名为“user”的数据库表。但MySQL将允许创建这样的表。

那是因为它是关键词吗?但是Hibernate无法识别任何问题(即使我们设置了PostgreSQLDialect)。

hibernate postgresql identifier
3个回答
106
投票

user是一个保留字,对于标识符(表,列)使用保留字通常不是一个好主意。

如果你坚持这样做,你必须把表名放在双引号中:

create table "user" (...);

但是在引用表时总是需要使用双引号。此外,表名称区分大小写。 "user"是一个与"User"不同的表名。

如果你想节省很多麻烦,请使用其他名称。 usersuser_account,......

有关引用标识符的更多详细信息,请参见手册:http://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS


11
投票

可以使用JPA指定具有下一语法的表名:

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

2
投票

我们之前有同样的问题,我们只是将表名从user更改为app_user。由于使用了Hibernate / JPA。我们认为这样会更容易。希望这个小修复可以帮助别人。

© www.soinside.com 2019 - 2024. All rights reserved.