You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改MySQL默认字符集?解决Python插入Emoji报错问题

解决Python插入Emoji到MySQL时的字符编码错误

问题根源

MySQL原生的utf8编码仅支持3字节字符,而Emoji属于4字节的Unicode字符,因此插入时会触发1366 (HY000)错误。你在MySQL控制台能正常执行插入,是因为控制台连接默认使用了支持4字节的utf8mb4编码,而Python的mysql.connector默认连接字符集未适配。

修改MySQL默认字符集的步骤

通过修改MySQL全局配置,让所有新连接默认使用utf8mb4,无需在Python代码中额外指定collation:

  1. 编辑MySQL配置文件
    根据操作系统找到对应的配置文件:

    • Linux:/etc/my.cnf 或 /etc/mysql/my.cnf
    • Windows:MySQL安装目录下的my.ini

    在配置文件中添加/修改以下内容:

    [mysqld]
    character-set-server=utf8mb4
    collation-server=utf8mb4_general_ci
    
    [client]
    default-character-set=utf8mb4
    
  2. 重启MySQL服务

    • Linux执行命令:
      sudo systemctl restart mysql
      
    • Windows通过服务管理器重启,或执行命令:
      net stop mysql && net start mysql
      
  3. 验证全局字符集配置
    登录MySQL控制台,执行以下SQL确认配置生效:

    SHOW VARIABLES LIKE 'character_set%';
    SHOW VARIABLES LIKE 'collation%';
    

    需确保以下参数值为utf8mb4或对应排序规则:

    • character_set_server = utf8mb4
    • character_set_client = utf8mb4
    • character_set_connection = utf8mb4
    • character_set_results = utf8mb4
    • collation_server = utf8mb4_general_ci
  4. 更新现有数据库和表的字符集
    全局配置仅对新创建的数据库/表生效,需手动更新已有资源:

    • 修改数据库字符集:
      ALTER DATABASE db CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
      
    • 修改表及所有字段的字符集:
      ALTER TABLE nice CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
      

完成以上操作后,Python连接MySQL时会自动使用utf8mb4编码,无需在连接配置中额外添加collation参数,即可正常插入含Emoji的文本。

内容的提问来源于stack exchange,提问作者user9102437

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 11:45:36