【异常】Caused by: java.lang.ClassNotFoundException: org.springframework.dao.DataIntegrityViolationException
2024-08-27 20:12:17
Caused by: java.lang.ClassNotFoundException: org.springframework.dao.DataIntegrityViolationException
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at org.springframework.util.ClassUtils.forName(ClassUtils.java:257)
这个异常是数据库插入时违反数据库约束引起 ,例如主键重复、向非空字段插入空值,或者插入字段违反表结构等
由于现场没有及时反馈日志, 只能通过数据库信息排查
--查看SEQ 信息
SELECT US.*
FROM USER_SEQUENCES US
WHERE US.SEQUENCE_NAME IN
('SEQ_PAYMENT', 'SEQ_PAYMENTDETAIL', 'SEQ_PHYRESOURCE',
'SEQ_DOCARDLOG', 'SEQ_VOUCARDSALE', 'SEQ_VOUCARDSALELIST');
--查看表信息
SELECT UT.TABLE_NAME, UT.NUM_ROWS
FROM USER_TABLES UT
WHERE UT.TABLE_NAME IN
('PAYMENT', 'PAYMENTDETAIL', 'PHYRESOURCE', 'DOCARDLOG',
'VOUCARDSALE', 'VOUCARDSALELIST');
获取到日志后发现原因
ORA-01438: value larger than specified precision allowed for this column
; nested exception is java.sql.SQLException: ORA-01438: value larger than specified precision allowed for this column
OPERATORCREDITADJUSTLOG 表最大到999999 ,实际数量只有2W多, 单最大ID 已经到999992 ,造成这个原因是因为 SEQ 中设置了 cache =20 这个缓存失效 造成 SEQ 值的浪费
最后 修改表结构可 设置 更大 的值,同时讲 seq中的 cache 设置为0
最新文章
- Android学习笔记之树形菜单的应用...
- iOS - (base64对字符串加解密)
- js阻止浏览器默认行为
- 白帽子讲Web安全1.pdf
- 帝国cms中上一篇与下一篇个性化灵动标签调出
- python 入门学习---模块导入三种方式及中文凝视
- python之字符串的分割和拼接
- Gallatin(大陆版)Office365中Exchange Online混合部署功能已经能够使用了
- MUI开发注意事项
- iOS 如何保持线程一直在运转(二)
- Vue 爬坑之路(九)—— 用正确的姿势封装组件
- webpack打包和gulp打包工具详细教程
- 用自己的话简要阐述struts2的执行流程
- hashMap源码分析1--翻译
- opencv人脸识别代码
- centos安装dlib
- MFC 如何为控件关联变量
- Java的一个关于“星球”的枚举
- yum 安装nginx
- laravel下载文件