• MYSQL5.7.25升级兼容微信emoji实操


      需求:

        h5前端页面显示昵称,兼容含emoji图像的昵称。

      技术调研:

        通过base_userinfo返回的微信用户信息,含emoji的返回形式为(XX□),微信接口数据达标。

        将(XX□)字符输出到文件中复制到数据库(已将数据库、表、字段的编码集改为utf8mb4【为UTF-8的超集,就和UTF-8是acsII的超集一样】)中,编写一个页面调用接口返回查看,返回结果达标。

        整体上可行。

      实现过程:

        1.修改数据库字符集:

          a.修改数据库默认配置,linux机器设置my.cnf,windows机器设置my.ini,内容如下:  

           [client]
          default-character-set=utf8mb4

          [mysql]
          default-character-set=utf8mb4

          [mysqld]
          character-set-server = utf8mb4
          collation-server = utf8mb4_unicode_ci
          init_connect = 'SET NAMES utf8mb4'
          character-set-client-handshake = false

          b.数据库、表、列字符集修改

          ALTER DATABASE 数据库名 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

          ALTER TABLE `表名` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

          ALTER TABLE `表名` MODIFY COLUMN `字段` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

        2.数据库重启

          定位命令: locate mysqld

          重启命令:mysqld restart

          

          

          

        3.校验

          检查下是否修改成功。

          校验命令:SHOW VARIABLES WHERE Variable_name LIKE 'character%' OR Variable_name LIKE 'collation%';

          

         4.应用修改

        数据库链接去掉:characterEncoding

      

         5.异常解析

        Caused by: java.sql.SQLException: Incorrect string value: 'xF0x9Fx90xB3aa...' for column 'Content' at row 1

        该种错误说明数据库持久层框架暂时不支持emoji的字符,所以报了异常。

        解决方案:将配置的数据库url修改下,去掉characterEncoding=utf8

         

        关于重启mysql后,mysql的配置并未生效的问题(笔者在ubuntu18碰到,centos7.3正常),是软件系统默认只读配置问题。改为可读可写即可,修改下即可:

        请参考:https://www.cnblogs.com/alsm/p/8079453.html

        

        若是修改之后重启数据库character_set_server依旧没改变,使用如下命令:

        set character_set_server=utf8mb4;

        

      参考资料:

        https://blog.51cto.com/suifu/1853864

  • 相关阅读:
    MyBatis中#{}和${}的区别
    springBoot 配置详解
    模板方法模式
    记录一次linux挂载数据盘
    缓存击穿,缓存穿透,缓存雪崩
    Echart折线值相加问题
    mybatis plus主键生成策略
    BigDecimal精度损失
    cent0s6安装nginx小程序https
    Centos6 java运行环境部署
  • 原文地址:https://www.cnblogs.com/potatoChicken/p/11146839.html
Copyright © 2020-2023  润新知