Out of range value for column 'ref_time' at row 1

508 查看

今天用springMVC+Mybatis开发项目时遇到上述问题。后来解决的时候发现居然是要保存的时间操作出范围了。


1.保存的时间值为:2638601576
因为我数据库中的时间设置为int 11位,上面的值为10位,没有超出数据库指定的范围,并且我还用sql语句执行了,一次,也能成功。但在项目里就报错。让人感觉很奇怪。


2.后来发现,原因是因为,我在java保存这个值的候候用的类型是Long.因为Mybatsi3.0之后,sql.xml里面不需要要写数据库的类型了,它会自动匹配。所以,它会自动它Long型值转换成int.如果我的值为1它会直接保存成功。现在我的值是2638601576看起来没有超出数据库的11位。但它将Long型值转换成int时出错了 ,因为这个值已经大于int类型的最大值2147483647了。所以数据库会报错上述错误。


3.解决办法之一就是将数据库中的int类型改成bigint类型这样就会解决上上述问题。还有一种方法就是因为这个值是我随便写的,暂时时间不会有这么大,所以默认不处理就可以了,因为按int最大值所对应的时间为2038-01-19 11:14:07所以,程序可以可以正常运行到那时。到那时之后,可能会有更高级处理的数据库更高级的语言了,暂时就不用考虑了。