美文网首页
guns -12解决Mysql:Incorrect string

guns -12解决Mysql:Incorrect string

作者: 牵手生活 | 来源:发表于2021-03-08 18:14 被阅读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)

    相关文章

      网友评论

          本文标题:guns -12解决Mysql:Incorrect string

          本文链接:https://www.haomeiwen.com/subject/xffmqltx.html