ORACLE使用过程中经常遇到一些没遇到的错误,这里做个简单的总结
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’;
需要SQL转储,结果运行SQL文件全部报错。
既然SQL文件是导出的,那肯定是没什么问题。查看字符集后发现没有问题,那么再看看是否原数据库与现数据库类型不一致导致的,最后发现原数据库是MYSQL,现在导入的是Oracle数据库,导致SQL语句出现了问题。
手动建表,然后调整SQL语句即可。
显然是数据查出来之后,封装到我们的resultMap或者resultType的时候类型错误了,排查一下SQL语句,一一对照SQL的返回字段以及实体类的属性类型。
比较明显的看出返回的Varchar,但是封装的时候用了Decimal进行接收了,进行修改即可。
显然报的是Oracle的错误,也就是说查询的时候就出了错误,结果都没返回。那么先查看SQL语句拼接可能会出现参数类型转换的地方。
显然找到错误了,原SQL使用的${},会出现SQL注入问题,所以这里进行了修改,通过#{}参数填充来规避掉字符串拼接。但是显然这里的String转换出错了,如下修改即可。
private List positionList = Arrays.asList(159,161,174,327,1,366,2);
AND device_id in #{item}
……持续更新
上一篇:我和她之间的感情,该如何是好
下一篇:灰原哀同人