Cha*_*nna 70 postgresql hibernate reserved-words identifier
似乎PostgreSQL不允许创建名为"user"的数据库表.但MySQL将允许创建这样的表.
那是因为它是关键词吗?但是Hibernate无法识别任何问题(即使我们设置了PostgreSQLDialect).
a_h*_*ame 111
user 是一个保留字,对于标识符(表,列)使用保留字通常不是一个好主意.
如果你坚持这样做,你必须把表名放在双引号中:
create table "user" (...);
但是在引用表时总是需要使用双引号.此外,表名称区分大小写."user"是一个不同的表名称"User".
如果你想节省很多麻烦,请使用其他名称.users,user_account,...
有关引用标识符的更多详细信息,请参见手册:http://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS
Bas*_*que 18
_SQL 标准明确承诺永远不会在任何名称、关键字或保留字中使用尾随下划线(U+005F LOW LINE)。要亲自查看,请在规范中搜索单词 \xe2\x80\x9cunderscore\xe2\x80\x9d。
\n因此,为了避免与各种数据库引擎使用的一千多个关键字和保留字发生冲突,我用尾随下划线命名所有数据库标识符。(是的,确实有一千多个保留关键字\xe2\x80\x94\xc2\xa0我数了一下。)
\n改变这个:
\nCREATE TABLE user ( \xe2\x80\xa6 ) ;\n\xe2\x80\xa6 为:
\nCREATE TABLE user_ ( \xe2\x80\xa6 ) ;\n我对所有数据库名称都这样做:模式、表、列、索引等。
\n知道我\xe2\x80\x99 已经消除了一整类由命名冲突引起的错误和问题,我就放心了一些。
\n作为一个额外的好处,当引用名为user与数据库列 的编程语言变量时,这种做法在文档、电子邮件等中非常清楚user_。任何带有下划线结尾的内容显然都是来自数据库端。
mnv*_*mnv 14
可以使用JPA指定tablename,并使用下一个语法:
@Table(name="\"user\"")
user您可以在 .xml 以外的架构中创建表public。这个例子:
CREATE SCHEMA my_schema;
CREATE TABLE my_schema.user(...);
| 归档时间: | 
 | 
| 查看次数: | 39145 次 | 
| 最近记录: |