用户名称中包含表情符,存入数据库报错-Incorrect string value: '\xF0\x9F\x98\x83' for column

用户名称中包含表情符,存入数据库报错-Incorrect string value: ‘\xF0\x9F\x98\x83’ for column


  • 其实只需将mysql的编码格式,改为 utf8,并且重启mysql服务。
  • 重点:mysql没有重启,问题就会发现没有解决。

但是如果按照这个朋友的方法也是可以的,因为他去掉了 jdbc链接时候指定的编码,这样就可能存在问题的
已解决:Incorrect string value: ‘\xF0\x9F\x98\x83’ for column ‘nick_name’ at row 1; https://blog.****.net/java1703/article/details/102699859

用户名称中包含表情符,存入数据库报错-Incorrect string value: '\xF0\x9F\x98\x83' for column

摘要

先说自己的最后一步解决问题的方法,自己直接修改表的编码格式:alter database db_pico_bbs2 character set utf8mb4;

同时也证明了一个问题:修改表字段,设置为utf8mb4 影响不大,最后还是要同时修改表的编码格式。

解决路程

先通过百度,查找解决方案,结果,都是说修改数据库的编码,修改表的编码, 修改字段的编码,去掉jdbc连接的useUnicode=true&characterEncoding=utf-8配置。这里面没有对错,只有适合谁的环境,谁的运行后就是对的。自己走了不少弯路。总结一下,以后备用

正解过程

由于自己的项目是重构项目,所以库也是导原来的。原来的库的编码是lant1编码,这一点自己忽略了,最后将该库的编码设置为utf8mb4 ,字段设置为utf8mb4,jdbc链接zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useAffectedRows=true
最后就跑通了。