似乎 PostgreSQL 不允许创建名为“用户”的数据库表。但是 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\"")
column user0_.id does not exist
这样的错误
我们之前也遇到过同样的问题,我们只是将表名从 user
更改为 app_user
。由于使用了 Hibernate/JPA。我们认为这样会更容易。希望这个小修复对其他人有所帮助。
您可以在 public
以外的架构中创建表 user
。这个例子:
CREATE SCHEMA my_schema;
CREATE TABLE my_schema.user(...);
不定期副业成功案例分享