输入的值对于日期格式不够长-Oracle shcema字段顺序必须与数据库中表列名顺序严格一致

本文记录了一个关于数据库插入数据时遇到的奇怪错误,并详细解释了如何定位问题所在,最终通过调整表结构顺序解决了输入值对于日期格式不够长的问题。

今天这个问题6了,
本地连vpn,去远程数据库获取数据然后放到本地数据库,断点跟踪,连接远程服务器没问题,连接远程数据库也没问题,获取数据没问题,sql查询放到数组中,然后循环放到本地schema中再放到set中再放到map中,然后插入本地数据库,整个流程是这样的,
问题出在插数数据时报错:开始是报输入值过多,这很明了,就是数据库表列个数比schema 字段个数少了,发现少了reportDate,字符串类型的,在数据库给表添加一列之后,再执行,报:输入值对于日期格式不够长,这也很明了,肯定是schema中date类型的值放的格式不正确,断点跟踪,发现是标准日期格式“2017-06-07”,其他schema给日期格式赋值也是这样的,放歌标志日期格式的字符串,然后它给转成date类型,都没问题的,这个就很神奇了,找了很多可能的地方:1.直接赋成标准格式字符串固定值“2017-06-07”,然并卵,还是一样的错 2.赋固定值 加上时分秒“2017-06-07 00:00:00”,然并卵,3.直接把日期赋值的语句全注掉,然并卵 4.远程sql查询时对date类型的处理是CONVERT(varchar(100), RPTDATE, 23)转换成字符串“2017-06-07 ” 换成(varchar(100), RPTDATE, 120) 转换成“2017-06-07 00:00:00”, 然并卵 5.跟踪到最后提交时schema里的值也是正确的,但是一提交insert就报错,这就神奇了。。
后来求助了一下部门大神,他了解了下我的操作及修改过程,看了看我的schema和表,发现reportDate字段再schema中第六列,而我在表里新添加的列在最后,这样就导致reportDate列往后的值往表中插入时都串了一位,尽管schema中每个字段值都是正确的,但是赋值给date类型的表里的不是对应schema中字段,不是日期值所以一直报输入值对于日期格式不够长错误。
之前我还跟他犟过:schema中字段顺序和表里的列顺序没关系,schema往字段赋值,然后根据schema字段名和值insert进表,
实则不然啊,严格一致,赶紧小积累起来~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值