症状:在导入数据时,报错:
com.jfinal.plugin.activerecord.ActiveRecordException: java.sql.SQLException: Incorrect integer value: '**' for column 'type' at row 1
at com.jfinal.plugin.activerecord.DbPro.save(DbPro.java:647)
at com.eova.ext.jfinal.EovaDbPro.save(EovaDbPro.java:34)
如下图:
最初怀疑数据库相关字段属性错误,但查实,mysql中“business_type"为int型,导入前数据已经转换成int,就是在执行insert事务时,就莫名多出来没有转换的string数据!一时找不到头绪。
后来无意发现,mysql中的“price"字段为decimal(20,2),即2位小数点,而待导入的数据有10位小数点,甚至不足1分!
后端导入traslate时,自动将这些忽略了!
而实际执行insert往mysql写数据时,这几行忽略的又被带上了!就造成没有转换的String类型值脏数据往Integer中写入从而报错!
原因:没有翻译(String转integer)的脏数据写入
解决办法:删除这些小于设定值以外的数据,就OK了。