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

MySQL5.6迁移至MySQL8遇'utf8mb3未知字符集'错误求助

解决MySQL 8.0迁移后utf8mb3字符集错误问题

1. 彻底修正备份文件的字符集引用

  • 打开备份SQL文件,执行全局替换:
    • 将所有utf8替换为utf8mb4
    • 将所有utf8mb3替换为utf8mb4
  • 检查文件开头的SET语句,确保所有字符集相关配置都是utf8mb4,示例:
    SET character_set_client = utf8mb4;
    SET character_set_connection = utf8mb4;
    SET character_set_results = utf8mb4;
    

2. 重新配置数据库字符集

  • 执行以下SQL语句(替换your_database_name为实际库名):
    ALTER DATABASE your_database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;
    
  • 重新连接数据库会话,再执行SHOW VARIABLES LIKE 'char%';和SHOW VARIABLES LIKE 'collation%';,确认character_set_database和collation_database已变为utf8mb4相关值

3. 修改MySQL全局配置(避免重启后还原)

  • 找到MySQL的配置文件(Linux为/etc/my.cnf或/etc/mysql/my.cnf,Windows为my.ini),添加或修改以下内容:
    [mysqld]
    character-set-server=utf8mb4
    collation-server=utf8mb4_0900_ai_ci
    
    [client]
    default-character-set=utf8mb4
    
  • 重启MySQL服务,再次检查字符集变量确认生效

4. 修正SQLAlchemy连接字符串

  • 在应用的数据库连接URL中明确指定charset=utf8mb4,示例:
    mysql+mysqldb://username:password@host:port/your_database_name?charset=utf8mb4
    

5. 重新导入备份并验证

  • 使用修正后的备份文件重新导入数据库
  • 随机抽查几个表的字符集配置,确认表和列都使用utf8mb4:
    SHOW CREATE TABLE your_table_name;
    

注意事项

character_set_system是MySQL系统元数据使用的字符集,默认就是utf8mb3,无需修改,不会影响业务正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 15:00:12