guns -12解决Mysql:Incorrect string value: '\xF0\x9F\x8D\x83\xF0\x9F...' for column

问题: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字节的表情字符。

image.png

修改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

其他知识点

Druid:阿里的JDBC连接池组件,详细参考

[分布式事务 ](http://www.cnblogs.com/zengkefu/p/5742617.html)

Atomikos:一个为Java平台提供增值服务的并且开源类事务管理器
2019-06-03 springboot结合dbcp2配置多条init SQL(connection-init-sqls)

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容