似乎PostgreSQL不允许创建名为“user”的数据库表。但MySQL将允许创建这样的表。
那是因为它是关键词吗?但是Hibernate无法识别任何问题(即使我们设置了PostgreSQLDialect)。
user
是一个保留字,对于标识符(表,列)使用保留字通常不是一个好主意。
如果你坚持这样做,你必须把表名放在双引号中:
create table "user" (...);
但是在引用表时总是需要使用双引号。此外,表名称区分大小写。 "user"
是一个与"User"
不同的表名。
如果你想节省很多麻烦,请使用其他名称。 users
,user_account
,......
有关引用标识符的更多详细信息,请参见手册:http://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS
可以使用JPA指定具有下一语法的表名:
@Table(name="\"user\"")
我们之前有同样的问题,我们只是将表名从user
更改为app_user
。由于使用了Hibernate / JPA。我们认为这样会更容易。希望这个小修复可以帮助别人。