Illegal group reference异常解决
2016-07-15 13:20
411 查看
异常场景:
Web项目与数据库有交互。
解决步骤:
开始的时候感觉是数据类型不匹配或是数据格式不规范的原因,因为在已经上线的项目中的某个实体内添加了日期字段(@Column(name = "CREATE_DATE" ,nullable=false,columnDefinition="datetime default '0000-00-00
00:00:00'")),看到列属性定义就可以看到错误在什么地方了,日期类型的字段,我为它赋了0000-00-00 00:00:00的默认值,呵呵。关键这不是头疼的事情,在测试的时候我为测试数据库中原先的相关数据手动添加了默认值,日期类型的。这样测试的时候绝对是没有问题的,因为测试数据库中没有columnDefinition="datetime default '0000-00-00
00:00:00'"这部分代码的用武之地,好了,测是没问题,上线吧。——Illegal group reference这个东西出来了。百思不得其解,测试正常,也很有自信感觉自己的代码没问题,到网上找各种资料,大多讲的异常Illegal group reference是由String
replaceAll(regex, replacement)函数造成的,搜索了整个项目,与新加字段相关的代码压根就没用到这个方法。还是坚持最初的怀疑——数据库中数据的问题。
这个时候想到生产环境和测试环境的差别就是测试的时候新增字段的默认值是我手动设置的,而生产数据库中新增字段的默认值是程序中定义的。这时大约的感觉到是columnDefinition="datetime default '0000-00-00 00:00:00'"这部分代码出问题了。写sql将默认值修改为DATE("2016-01-01
00:00:00")在运行程序,问题解决了。
总结:
这个场景中Illegal group reference异常出现的原因是数据库中的数据不符合Java或是JavaScript中数据的规范,比如运行sql语句UPDATE
activity_enrole_user SET CREATE_DATE = '0000-00-00 00:00:00';没有任何问题,但是在JavaScript中new Date("0000-00-00 00:00:00");会提示Invalid Date,new Date("2016-01-01 00:00:00")则正常显示Fri Jan 01 2016 00:00:00
GMT+0800 (中国标准时间)。
心得:
在与数据库交互的应用中,出现错误的原因可能是代码本身,也有可能是数据的问题,此时就需要多加思考和验证问题产生的来源。
Web项目与数据库有交互。
解决步骤:
开始的时候感觉是数据类型不匹配或是数据格式不规范的原因,因为在已经上线的项目中的某个实体内添加了日期字段(@Column(name = "CREATE_DATE" ,nullable=false,columnDefinition="datetime default '0000-00-00
00:00:00'")),看到列属性定义就可以看到错误在什么地方了,日期类型的字段,我为它赋了0000-00-00 00:00:00的默认值,呵呵。关键这不是头疼的事情,在测试的时候我为测试数据库中原先的相关数据手动添加了默认值,日期类型的。这样测试的时候绝对是没有问题的,因为测试数据库中没有columnDefinition="datetime default '0000-00-00
00:00:00'"这部分代码的用武之地,好了,测是没问题,上线吧。——Illegal group reference这个东西出来了。百思不得其解,测试正常,也很有自信感觉自己的代码没问题,到网上找各种资料,大多讲的异常Illegal group reference是由String
replaceAll(regex, replacement)函数造成的,搜索了整个项目,与新加字段相关的代码压根就没用到这个方法。还是坚持最初的怀疑——数据库中数据的问题。
这个时候想到生产环境和测试环境的差别就是测试的时候新增字段的默认值是我手动设置的,而生产数据库中新增字段的默认值是程序中定义的。这时大约的感觉到是columnDefinition="datetime default '0000-00-00 00:00:00'"这部分代码出问题了。写sql将默认值修改为DATE("2016-01-01
00:00:00")在运行程序,问题解决了。
总结:
这个场景中Illegal group reference异常出现的原因是数据库中的数据不符合Java或是JavaScript中数据的规范,比如运行sql语句UPDATE
activity_enrole_user SET CREATE_DATE = '0000-00-00 00:00:00';没有任何问题,但是在JavaScript中new Date("0000-00-00 00:00:00");会提示Invalid Date,new Date("2016-01-01 00:00:00")则正常显示Fri Jan 01 2016 00:00:00
GMT+0800 (中国标准时间)。
心得:
在与数据库交互的应用中,出现错误的原因可能是代码本身,也有可能是数据的问题,此时就需要多加思考和验证问题产生的来源。
相关文章推荐
- JavaScript 调试小技巧
- Ubuntu下深度环境的搭建opencv2.4.9+caffe+py-faster-rcnn+tensorflow的搭建
- webpack ,react
- div+CSS ID的命名规范和习惯
- HTML5拖拽上传图片预览
- 《JavaScript高级程序设计》——字符串连接性能测试
- 剑指Offer--题集目录索引
- css rect
- 我为什么选择ANGULAR 2?
- JavaScript操作JSON的方法总结,JSON字符串转换为JSON对象
- html form
- 【前端福利】用grunt搭建自动化的web前端开发环境-完整教程
- DOM中为事件添加事件处理程序的几种方式以及跨浏览器方式
- css 权重
- Jsp中out.println()与System.out.println()的区别
- JavaScript的几种继承方式
- 添加提前闭合标签 之后添加js可以执行js
- 使用nvm进行node多版本管理
- ArcGIS API for javascript(4.0)开发笔记 —— 自定义微件位置
- javascript语句——表达式语句、块语句、空语句和声明语句