问题描述
生产中审批订单有一个订单报错,具体报错如下:
ORA-01461:can bind a LONG value only for insert into a LONG column
只能把long型数据插入一个long型数据列。
问题分析
字段的值超过4K的字符数据,会被oracle直接转换成long型数据插入数据库,因为varchar2不能存储超过4k的数据,这个转化是为了减少认为的设置或者当初设计不当造成的错误。
解决方案
1、校验插入的字符长度
2、这个超长的字段是附件列表,不保存所有的附件信息,只保留key值即可。
在与外部系统交互时,最好先保存发送记录,然后再进行推送,然后再进行更新状态。
因为如果是先推送后记录。推送后,保存记录失败则导致数据不一致。
如果是先记录后推送,如果推送失败,则两边数据不一致。