Mybatis 进行 ORACLE 操作报错以及解决方案
创始人
2025-05-28 14:08:16

ORACLE查询语句报错以及解决方案

  • 前言
  • 错误以及解决方案
    • ORA-01843 not valid month
      • 问题简述
      • 解决方案
    • ORA-00911: invalid character
      • 问题简述
      • 解决方案
    • 无法转换为内部表示
      • 问题简述
      • 解决方案
    • ORA-01722: 无效数字
      • 问题简述
      • 解决方案

前言

ORACLE使用过程中经常遇到一些没遇到的错误,这里做个简单的总结

错误以及解决方案

ORA-01843 not valid month

问题简述

INSERT INTO t_b_airstationinfo VALUES ('084ecdeda60c8700e9392d9d41c261af', '1007A', '武术学校', null, '湾里区', null, '115.74222200', '28.79944400', '南昌市湾里区梅岭店前街梅岭宾馆内', null, null, '40287e816714ec9201671642b093002c', '3', '2021-03-15 15:06:32.000000', null, '1', '40287e816714ec9201671642b093002c');

在数据库转储的过程中,TimeStamp字段报错。

解决方案

原因是TimeStamp类型不一致。显然要插入的数据格式的TimeStamp日期格式为YYYY-MM-DD HH24:MI:SS.FF6。修改会话参数使得符合TimeStamp格式即可。

alter session set nls_timestamp_format = ‘YYYY-MM-DD HH24:MI:SS.FF6’;

ORA-00911: invalid character

在这里插入图片描述

问题简述

需要SQL转储,结果运行SQL文件全部报错。

解决方案

既然SQL文件是导出的,那肯定是没什么问题。查看字符集后发现没有问题,那么再看看是否原数据库与现数据库类型不一致导致的,最后发现原数据库是MYSQL,现在导入的是Oracle数据库,导致SQL语句出现了问题。
在这里插入图片描述
手动建表,然后调整SQL语句即可。

无法转换为内部表示

问题简述

在这里插入图片描述

解决方案

显然是数据查出来之后,封装到我们的resultMap或者resultType的时候类型错误了,排查一下SQL语句,一一对照SQL的返回字段以及实体类的属性类型。
在这里插入图片描述在这里插入图片描述
比较明显的看出返回的Varchar,但是封装的时候用了Decimal进行接收了,进行修改即可。

ORA-01722: 无效数字

问题简述

在这里插入图片描述

解决方案

显然报的是Oracle的错误,也就是说查询的时候就出了错误,结果都没返回。那么先查看SQL语句拼接可能会出现参数类型转换的地方。
在这里插入图片描述
在这里插入图片描述
显然找到错误了,原SQL使用的${},会出现SQL注入问题,所以这里进行了修改,通过#{}参数填充来规避掉字符串拼接。但是显然这里的String转换出错了,如下修改即可。

private List positionList = Arrays.asList(159,161,174,327,1,366,2);
        AND device_id in #{item}

……持续更新

相关内容

热门资讯

“海南封关120多万卡宴只要6... 12月20日,话题#海南封关120多万卡宴只要60万#冲上热搜,引发公众热议。据媒体报道,12月18...
向油腻饮食说不 转自:北京日报客户端清晨6点,很多城市的食街开始苏醒。热气蒸腾中,油饼、油条冒着气泡上下翻滚,迅速成...
新疆阿克苏地区乌什县发生4.2... (来源:上观新闻)中国地震台网正式测定:12月22日05时16分,在新疆阿克苏地区乌什县(北纬41....
美参议员:加沙国际稳定部队须在... 本文转自【央视新闻客户端】;当地时间12月21日,正在以色列访问的美国参议员林赛·格雷厄姆表示,正在...
听武康大楼讲述烽烟岁月中的上海... (来源:上观新闻)如今,作为上海最具人气的网红地标之一,武康大楼早已成为游客争相打卡的城市名片。这栋...