H2 数据库的 expected "identifier 错误
2023-06-13 09:13:39 时间
尝试使用 H2 数据库创建表,但是老是提示 expected "identifier 这个错误。
问题和解决
经过搜索后才知道,上面的错误是因为我们使用的表名 USER 是 H2 的关键字。
H2 的关键字列表为:Advanced
很明显这里 是一个关键字。
可以:
- 简单粗暴的对使用的关键字使用单引号
- 在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?
相关文章
- runtime错误解决方案_完美解决Office1402错误
- 软件管理和电脑管家打不开怎么办_电脑管家下载软件连接错误
- 再谈Win7 x64 Explorer.exe R6025错误
- 【错误记录】安装 Visual Studio 2013 中文语言包报错 ( 需要 Microsoft Visual Studio Test Agent , 但此计算机上并为安装它 )
- MySQL 1064 错误解决方法
- python 抛出自定义错误
- SQLServer 错误 14265 MSSQLServer 服务意外终止。 有关可能的原因,请查看 SQL Server 错误日志以及 Windows 系统和应用程序事件日志。 故障 处理 修复 支持远程
- oracle数据库ORA-01196错误解决办法分享
- Oracle数据库ORA 54013错误的解决办法
- 一文带你永久摆脱Mysql时区错误问题(idea数据库可视化插件配置)
- MySQL:查找错误日志路径(mysql错误日志路径)
- 解决Oracle 942错误:一步一步指南(oracle942错误)
- MSSQL连接数据库密码获取工具与原文数个错误纠正
- 避免数据错误,规避重复记录 Oracle 数据库管理必备(重复记录oracle)
- 揭秘Oracle数据库中的01013错误(oracle-01013)
- Oracle数据库出现递归错误如何解决(oracle出现递归错误)
- Oracle数据库突破2149错误局限(oracle -2149)
- 1418错误挫败MySQL原因与解决方法(1418错误mysql)
- 解决Oracle数据库主路径错误(oracle主路径错误)
- Oracle数据库修复错误,重现完整可用(oracle修复错误)
- 错误Oracle数据库01452错误处理指南(oracle中01452)
- 解密Oracle 01036错误,轻松解决数据库卡顿问题(oracle 01036)
- 如何解决Oracle数据库错误ORA0000(oracle0000错误)