开发工具分享
  • 首页
  • 计算科学
  • 文化旅游
  • 项目和网站
    • OSSEZ 计算技术
    • USRealEstate 社区
    • 地区文化
    • CWIKI.US
    • BUG.OSSEZ.COM
    • RSS.OSSEZ.COM
CWIKIUS.CN
一个有独立思考和温度的清新站
  1. Home
  2. Computer Science
  3. This article

H2 数据库的 expected "identifier 错误

2022年10月01日 615Browse 0Like 0Comments

尝试使用 H2 数据库创建表,但是老是提示 expected "identifier 这个错误。

 

H2-01

 

问题和解决

经过搜索后才知道,上面的错误是因为我们使用的表名 USER 是 H2 的关键字。

H2 的关键字列表为:Advanced

很明显这里 是一个关键字。

 

H2-02

 

可以:

  • 简单粗暴的对使用的关键字使用单引号
  • 在JDBC 连接中使用 ;NON_KEYWORDS=USER

数据库关键字

到底应不应该使用 USER 作为用户表的命名呢?

搜索了下不同的说法,大部分都认为不应该将用户表的名称命名为 USER ,而应该使用 Person。

根据 ISO/IEC 11179-6:20 中规范的说法,我们应该避免使用 USER 来命名用户表,也不要使用 USERS 来命名。

数据库表的命名可以使用前缀和后缀的方式。

下面是有关的一些实例。

前缀

如果你的表可能超过有 100 个表的话,可以使用定义的前缀来命名,例如:

  • REF_ 为参考表
  • OE_ 为 Order Entry 相关,这个值针对为物理级别的命名,而不是逻辑级别的

后缀

永远不要使用后缀来命名表,而应该使用后缀来命名其他的东西,但是这也不是绝对的的。
例如针对视图我们可以使用 _V 这个前缀来命名。

  • _fk 外键
  • _cac 缓存
  • _seg Segment
  • _tr 事务
  • _fn 函数等

总结

针对表的命名没有绝对的统一的说法,但是针对一个公司或者一个项目,最好使用统一命名的标准。

对表进行一些系统性的区分,能够让我们更好的区分用途。

例如:
系统表(S_)可以用来定义系统的基本信息,更多是元数据等,这些数据是有关于系统运行的,通常例如可以定义 系统用户表(S_USER)、系统角色表(S_ROLE)等。

这样可以有效的避免关键字冲突。

很多时候,可能觉得这个是不是有点麻烦呀,很多项目可能不会超过几百个表。

但,免不了一些奇葩项目,有上千个表,经历过一个不是非常复杂的逻辑项目,但是表有 1300 多个,真不知道这个表是怎么建的,并且是各种奇葩的命名都有。

另外,千万别用 tbl 作为前缀来命名表,简直就是脱了裤子放屁,谁不知道你这个表是 tbl?

 

https://www.ossez.com/t/h2-expected-identifier/14122

Tags: None
Last updated:2022年10月01日

HoneyMoose

有温度的人文和独立的思考

Like
< Previous
Next >

Comments

Cancel reply

Archives
  • May 2026
  • April 2026
  • March 2026
  • February 2026
  • January 2026
  • December 2025
  • November 2025
  • October 2025
  • September 2025
  • August 2025
  • July 2025
  • June 2025
  • May 2025
  • April 2025
  • March 2025
  • February 2025
  • January 2025
  • December 2024
  • November 2024
  • October 2024
  • September 2024
  • August 2024
  • July 2024
  • June 2024
  • May 2024
  • April 2024
  • March 2024
  • February 2024
  • January 2024
  • December 2023
  • November 2023
  • October 2023
  • September 2023
  • August 2023
  • July 2023
  • June 2023
  • May 2023
  • April 2023
  • December 2022
  • November 2022
  • October 2022
  • September 2022
  • August 2022
  • May 2022
  • April 2022
  • March 2022
  • February 2022
  • January 2022
  • December 2021
  • November 2021
  • October 2021
  • September 2021
  • August 2021
  • July 2021
  • June 2021
  • May 2021
  • April 2021
  • March 2021
  • February 2021
  • January 2021
  • December 2020
  • November 2020
  • October 2020
  • September 2020
  • August 2020
  • July 2020
  • June 2020
  • May 2020
  • April 2020
  • March 2020
  • February 2020
  • January 2020
  • December 2019
  • November 2019
  • October 2019
  • September 2019
  • August 2019
  • July 2019
  • June 2019
  • May 2019
  • April 2019
  • March 2019
  • February 2019
  • January 2019
  • December 2018
  • November 2018
  • October 2018
  • September 2018
  • August 2018
  • July 2018
  • June 2018
  • May 2018
  • April 2018
  • March 2018
Categories
  • Computer Science (2,362)
    • Confluence (663)
    • Gradle (12)
  • U.S. (482)
  • 文化旅游 (145)

COPYRIGHT © 2020 CWIKIUS. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS

湘ICP备2020018253号-1