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

MariaDB 10.6使用mysql_install_db初始化系统库字符集排序规则异常如何解决

问题原因说明

MariaDB 10.6 版本开始,默认utf8别名指向utf8mb3,你遇到的初始化系统库字符集不生效、手动建库指定utf8mb4仍为utf8mb3的问题,核心是两个原因:

  1. Windows 版本的mysql_install_db.exe已被官方弃用,本身不支持动态读取指定配置文件,默认使用内置的字符集参数创建系统库
  2. 你之前用mariadbd.exe初始化时使用了相对路径指定配置文件,Windows 版本的 MariaDB 会忽略相对路径的--defaults-file参数,导致配置没有生效

解决方案

方案一:重新初始化(推荐,无残留问题)

  1. 先清空之前创建的datadir目录所有内容
  2. 调整my.cnf配置,补全系统库初始化相关的字符集参数:
[client]
default-character-set=utf8mb4

[mysql]
default-character-set=utf8mb4

[mysqld]
port = 8137
# 基础字符集配置
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
init_connect='SET NAMES utf8mb4'
character-set-client-handshake = FALSE
# 强制指定数据库级别默认字符集,控制系统库初始化配置
character_set_database = utf8mb4
collation_database = utf8mb4_general_ci
# 禁用utf8mb3作为默认utf8别名
old_mode=
  1. 使用绝对路径执行初始化命令,替换为你本地实际的文件路径:
# 示例路径,替换为你本地的实际路径
C:\Service\Tools\mariadb-winx64\bin\mariadbd.exe --defaults-file=C:\Service\Tools\my.cnf --initialize-insecure --datadir=C:\Service\Tools\mariadb-data
  1. 初始化完成后注册服务、启动,执行以下命令验证参数是否生效:
show global variables like '%char%';
show global variables like '%collation%';

此时再执行建库语句,即可正常使用指定的utf8mb4字符集。

方案二:不重新初始化,手动修改现有系统库字符集

如果不想重新部署现有服务,可以直接批量修改系统库和表的字符集:

  1. 修改系统库默认字符集:
ALTER DATABASE mysql CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci;
ALTER DATABASE information_schema CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci;
ALTER DATABASE performance_schema CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci;
  1. 批量生成mysql库下所有表的字符集修改语句,执行以下SQL后复制输出结果,再执行即可完成所有系统表的字符集转换:
SELECT CONCAT('ALTER TABLE `', table_name, '` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;') AS modify_sql
FROM information_schema.tables
WHERE table_schema = 'mysql' AND table_type = 'BASE TABLE';

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 05:09:03