Oracle数据库问题及解决方案记录

总结项目中遇到的各种sql报错及Oracle问题。

1.ORA-01843: 无效的月份

报错信息如下:

org.springframework.dao.DataIntegrityViolationException: 
### Error querying database. Cause: java.sql.SQLDataException: ORA-01843: 无效的月份

### The error may exist in file [D:\tomcat\tianheng\yshh-demo\WEB-INF\classes\mybatis\yshh\TrainersMapper.xml] 
### The error may involve TrainersMapper.statisticsAgeCount-Inline 
### The error occurred while setting parameters 
### SQL: select EXTRACT(year FROM to_date(to_char(sysdate,'yyyy-mm-dd'),'yyyy-mm-dd'))-EXTRACT(year FROM to_date(tra.birthday,'yyyy-mm-dd')) as age, count(tra.TRAINERS_ID) as ageCount from tb_trainers tra where tra.birthday is not null AND tra.GONGDI_ID = ? group by tra.birthday order by age 
### Cause: java.sql.SQLDataException: ORA-01843: 无效的月份

; SQL []; ORA-01843: 无效的月份
; nested exception is java.sql.SQLDataException: ORA-01843: 无效的月份

从中可以分析出是mapper文件中的sql出了问题,分析sql可知问题出在了生日这一块,数据库的生日存储格式是yyyy-mm-dd,字段类型为varchar。从提示可以看出应该是某个出生日期的月份不合法(非01-12),于是只能慢慢从数据库排查是哪个人的出生日期出了问题,如果以前没有出现这种情况,那说明是最近添加的数据导致的,可按插入时间(创建时间)排序查找,效率快得多。

问题原因:某人出生日期不合法(eg1996-63-15)

处理结果:将数据修正。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值