guns -12解决Mysql:Incorrect string

2021-03-08  本文已影响0人  牵手生活

问题: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)

上一篇 下一篇

猜你喜欢

热点阅读