问题:Mysql:Incorrect string value: '\xF0\x9F\x8D\x83\xF0\x9F...' for column
原因:通常情况,Mysql数据编码格式为“utf-8”,对于汉字来说足够;Mysql中utf8占3个字节,但是,3个字节对于表情符号是不够的,需4个字节;此时使用utf8,会出现‘\xF0\x9F\x8D\x83\xF0\x9F’的问题。
解决方法
对应字段修改为utf8mb4编码,utf8mb4编码是utf8编码的超集,兼容utf8,并且能存储4字节的表情字符。
修改yml配置(奇葩的是没有见效)
druid:
connection-init-sql:
- set names utf8mb4
image.png
何大神跟踪调试源码后,发现yml配置中多数据源没有起效。估计guns框架的多数据源是要收费的。
何大神通过启动时添加系统变量来实现
public static void main(String[] args) {
//可以在navicat客户端通过sql语句设置编码格式
//set names utf8mb4;
System.getProperties().put("druid.initConnectionSqls","set names utf8mb4");
SpringApplication.run(GunsApplication.class, args);
logger.info(GunsApplication.class.getSimpleName() + " is success!");
}
image.png
其他知识点
[分布式事务 ](http://www.cnblogs.com/zengkefu/p/5742617.html)
Atomikos:一个为Java平台提供增值服务的并且开源类事务管理器
2019-06-03 springboot结合dbcp2配置多条init SQL(connection-init-sqls)
网友评论