彻底解决:java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x94' for column 'name' at row 1

 

这个报错的原因是因为emoji或者可能的特殊字符插入数据库导致的字节数不一致问题,参考下面那篇文章.

 

做微信绑定的时候,一直绑定失败,一开始解决问题的思路错误了.

对于不方便抓包的手机web,遇到问题首先应该在服务器端看是否收到请求,如果收不到再抓包查看请求是否发送.

这样就能确认问题出在了哪里,客户端/应用服务器/db,可以用sout输出信息来进行测试.

 

这次的问题是因为nickname里面不知道为什么有特殊字符(我昵称明明是中文),然后服务器端发现抛出了这个异常.

百度后发现这个是因为数据库字符集不支持emoji,我这下知道为什么我本机一直可以插入了,因为我本机是utf8(默认创建就是),所以不会有这个问题,但是服务器端默认创建的数据库是latin,这下原因知道了,所以我把本机和服务器的数据库都换成了utf8mb4,utf8mb4_unicode_ci,并且根据 https://blog.csdn.net/qq_31122833/article/details/83992085 设置了服务器上的mysql默认字符集/去除了java连接中的编码.

 

所以以后数据库创建不能再不选字符集了,linux下的mysql创建数据库有可能不是默认的utf8,所以要指定为 utf8mb4,utf8mb4_unicode_ci ,这样以后就不会出现这种问题了.

 

posted @ 2020-04-13 15:35  由良大小姐  阅读(1861)  评论(0编辑  收藏  举报