首页 > 数据库 >H2 数据库的 expected “identifier 错误

H2 数据库的 expected “identifier 错误

时间:2022-10-08 14:04:47浏览次数:83  
标签:后缀 关键字 H2 命名 USER 使用 expected identifier


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

H2 数据库的 expected “identifier 错误_ide

问题和解决

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

H2 的关键字列表为:​​Advanced​

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

H2 数据库的 expected “identifier 错误_java_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 多个,真不知道这个表是怎么建的,并且是各种奇葩的命名都有。


标签:后缀,关键字,H2,命名,USER,使用,expected,identifier
From: https://blog.51cto.com/cwikius/5737454

相关文章

  • 【gym102979E】Expected Distance(期望DP)
    ExpectedDistance题目链接:gym102979E题目大意有一棵树,第i个点的父亲再1~i-1中根据每个数的a值乘正比概率出现,然后边的长度是两端的点的b值的和。然后多组询问......
  • IfcIdentifier
    IfcIdentifier类型定义标识符是一个字母数字字符串,允许识别单个事物。它可能无法提供自然语言含义。 类型:最多255个字符的字符串 注:类型改编自ISO10303-41中定义......
  • 执行shell脚本报错syntax error near unexpected token `$'\r''解决方法
     今天在进行性能测试时,正好需要一个老脚本,直接拿过来修改一下就可以使用,但是运行时直接报错了syntaxerrornearunexpectedtoken`$'\r'内心一万个WTF,为啥不行呢第一步 ......
  • 安装fabric时,出现Error: got unexpected status: BAD_REQUESTic
    问题如下:(已经尝试了sudo./byfn.sh-mdown很多次,以及重装了多次fabric)sudo./byfn.sh-mup后出现下面的问题:EndorserandordererconnectionsinitializedError:gotu......
  • /bin/sh^M: bad interpreter: syntax error near unexpected token `elif'
    在Linux中执行.sh脚本,异常/bin/sh^M:badinterpreter:Nosuchfileordirectory。分析:这是不同系统编码格式引起的:在windows系统中编辑的.sh文件可能有不可见字符,所以在......
  • Windows 11升级22H2
    Windows11升级22H21.下载Windows1122H2镜像访问MSDNITellYou下载2.添加注册表项绕过Windows11检测参考这篇文章,以管理员权限运行命令行,输入:regadd"HKLM\SY......
  • H2 数据库的 expected "identifier 错误
    尝试使用H2数据库创建表,但是老是提示expected"identifier这个错误。  问题和解决经过搜索后才知道,上面的错误是因为我们使用的表名USER是H2的关键字。H......
  • 使用msck修复hive分区时报错Unexpected partition key hour found at
    报错内容如下:2022-09-29T10:19:39,785ERROR[be6bd8ac-4a04-4f23-ac2a-540949dea68amain]metadata.HiveMetaStoreChecker:org.apache.hadoop.hive.ql.metadata.HiveExce......
  • Oauth2.0 用Spring-security-oauth2 来实现
    前言:要准备再次研究下统一认证的功能了,我还是觉得实现统一认证用Oauth2最好了,所以,现在再次收集资料和记笔记。正文:一、概念理解    OAuth2,是个授权协议,......
  • ffmpeg5.0+h264+h265 windows下编译方法
    目录前言一,源码包下载1.ffmpeg下载2.下载x264代码3.下载x265代码二,MSYS2安装三,安装cmake工具四,代码编译1.编译x2642.编译x2653.编译ffmpeg五,功能验证1.x264......