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

迁移至MariaDB 10.5后双字节字符插入报错,求解决方法

解决MariaDB 10.5插入双字节字符(韩文/俄文)失败的配置方案

1. 检查并统一数据库/表的字符集与排序规则

旧MySQL 5.0常使用latin1或仅支持BMP字符的旧版utf8,这会导致双字节字符插入失败。需将目标库、表统一改为utf8mb4(支持全Unicode字符,覆盖韩文、俄文等所有双字节/多字节字符):

  • 查看当前数据库字符集:
    SHOW CREATE DATABASE your_database_name;
    
  • 查看当前表字符集:
    SHOW CREATE TABLE your_table_name;
    
  • 修改数据库默认字符集:
    ALTER DATABASE your_database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    
  • 修改表及所有列的字符集:
    ALTER TABLE your_table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    
    若需单独修改某列:
    ALTER TABLE your_table_name MODIFY COLUMN your_column_name TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    

2. 配置MariaDB全局字符集参数

编辑MariaDB配置文件(Rocky 9.1中通常为/etc/my.cnf.d/mariadb-server.cnf或/etc/my.cnf),确保全局字符集统一为utf8mb4:

  • 在[mysqld]区块添加:
    character-set-server = utf8mb4
    collation-server = utf8mb4_unicode_ci
    init_connect = 'SET NAMES utf8mb4'
    
  • 在[client]区块添加:
    default-character-set = utf8mb4
    
  • 重启MariaDB服务使配置生效:
    systemctl restart mariadb
    

3. 确认连接会话的字符集设置

连接数据库后,执行以下命令验证会话字符集是否与全局一致:

SHOW VARIABLES LIKE '%character%';
SHOW VARIABLES LIKE '%collation%';

需确保character_set_client、character_set_connection、character_set_results、character_set_server均为utf8mb4。
若使用命令行客户端,启动时可显式指定字符集避免编码不匹配:

mysql -u your_username -p --default-character-set=utf8mb4 your_database_name

4. 迁移数据时的编码一致性

从旧MySQL 5.0导出数据时,需指定正确的字符集,避免导出过程中编码损坏:

mysqldump -u your_username -p --default-character-set=utf8mb4 your_database_name > dump.sql

导入到MariaDB时同样指定字符集:

mysql -u your_username -p --default-character-set=utf8mb4 your_database_name < dump.sql

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 13:04:55