mysql 存储emoji 表情

mysql 存储emoji 表情

近期订单模块发现奇怪bug,某个客户的订单一直更新不到系统中; 于是发现客户的订单号竟然有表情(🐝)…..真的奇葩;
特殊表情字符无法入库,而订单相关表设计的字符集为utf8,不支持特殊字符。存储emoji表情需要unicode字符集, 所以修改相关字符集, 得以解决。

mysql_emoji

  1. 需要将mysql 连接指定字符集utf8mb4
    mysql+mysqldb://user:pwd@localhost/database?charset=utf8mb4

  2. 数据库字符集 首先查看字符集设置如下, character_set_system为utf8, 需要将其修改为utf8mb4
    查看命令: SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';

     +--------------------------+--------------------+
     | Variable_name            | Value              |
     +--------------------------+--------------------+
     | character_set_client     | utf8mb4            |
     | character_set_connection | utf8mb4            |
     | character_set_database   | utf8mb4            |
     | character_set_filesystem | binary             |
     | character_set_results    | utf8mb4            |
     | character_set_server     | utf8mb4            |
     | character_set_system     | utf8               |
     | collation_connection     | utf8mb4_unicode_ci |
     | collation_database       | utf8mb4_unicode_ci |
     | collation_server         | utf8mb4_unicode_ci |
     +--------------------------+--------------------+
  3. 改库、表、字段的字符集

     ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE utf8mb4_unicode_ci;
     ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
     ALTER TABLE table_name CHANGE column_name column_name VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL;

 上一篇
Supervisor进程管理工具 Supervisor进程管理工具
一、supervisor简介Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。它是通过fork/exec的方式把这些被管理的进程当作supe
2021-10-18
下一篇 
pod假死 pod假死
K8S pod假死处理方案近期在调研新技术方案, 开发和灰度过程中遇到pod假死问题; 总结出两个方案, 可供参考.详细内容: https://jimmysong.io/kubernetes-handbook/guide/configure
2021-10-08
  目录