SQL state [HY000]; error code [1366]; #HY000; nested exception is java.sql.SQLException: #HY000

问题描述:
mysql数据库插入数据时报1366错误。。

问题查找:
1、通过 SHOW VARIABLES LIKE ‘character%’; 命令查看看字符编码,未发现编码有问题。
SQL state [HY000]; error code [1366]; #HY000; nested exception is java.sql.SQLException: #HY000
2、查看表中的字符编码:SHOW FULL COLUMNS FROM table_name; 未发现问题

SQL state [HY000]; error code [1366]; #HY000; nested exception is java.sql.SQLException: #HY000
到这里我都懵逼 了。。完全不知道为毛出错。。。好吧,其实想想,之前存储一直没有报错。。。那就把SQL语句抓出来,一个个分析吧。。。

问题发现:
有个字段类型为:bigint,实际存储时存入的是Varchar,而之前一直没报错,是因为存储的数字类型的字符串,所以这个问题才会一直没有出现。。。而这次存储是带有英文字符的值,所以报错了。。

修复:
修改报错的字段类型为varchar,问题解决。

总结:
MYSQL 报1366错误,可能并不是因为字符编码问题,也有可能是类型不匹配造成的。留个记录,以便备查。