异常-Data truncation: Truncated incorrect DOUBLE value: '-9370.3530-'
1详细异常日志
9/11/04 17:36:09 ERROR base.SQLHelper: Data truncation: Truncated incorrect DOUBLE value: '-9370.3530-' com.mysql.jdbc.MysqlDataTruncation: Data truncation: Truncated incorrect DOUBLE value: '-9370.3530-' at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3971) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3909) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2527) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2680) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2490) at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1858) at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2079) at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2013) at com.mysql.jdbc.PreparedStatement.executeLargeUpdate(PreparedStatement.java:5104) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1998) at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeUpdate(NewProxyPreparedStatement.java:105) at
2 查了一下网上的讨论以及各种可能性
A 数据库编码 所以,将编码由utf8改成utf8mb4。
B 升级mysql 驱动
C jdbc的连接配置,要开启useUnicode=true,并且要设置一个支持中文的编码,不需要跟mysql表的编码保持一致,只需要支持中文就行。例如characterEncoding=utf8
D mybatis 的问题,自己需要
mybtais是用 insert into select 语句时出现一个奇怪的问题,生成的SQL语句,在MYSQL客服端执行没有问题,但是使用mybatis框架时出现了:Cause: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Truncated incorrect DOUBLE value: 'N900' 错误,网上查找了半天最终解决,出现问题的原因 在select 中有where条件,mode字段类型为varchat, 在mybatis mapper 文件中 使用了如下方式 where mode = 1, 改为 where mode='1',问题解决,具体原因待研究。
我都不是上面的情况
3 最后 凭借的sql里面string类型的加上 ' (单引号) 解决问题,注意拼接的sql,也许直接在数据库执行没有问题,但是代码执行会有问题
例如 update table set phone = '1511001010100' where name = 'xxxysdfdsf'