mysql_install_db 错误的字符集和排序规则

mysql_install_db 错误的字符集和排序规则

我正在使用 mysql_install_db 工具创建新服务器。它设置了正确的数据目录、端口、密码、服务等。但我的问题是我的基表的字符集和排序规则错误。它们需要是 utf8mb4 和 utf8mb4_general_ci。

我找不到在安装过程中更改这些表的方法。当我更改 my.cnf/my.ini 时,它只会更改新创建的数据库。但由于 mysql_install_db 创建了系统数据库,因此它们创建错误。

看起来我的 msyql_install_db.exe 不接受默认文件参数。

其他事情也很奇怪。如果我运行命令来创建新数据库,它也会使用 utf8mb3,而我明确将 COLLATE 设置为 utf8mb4_unicode_ci。

CREATE DATABASE IF NOT EXISTS tt DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci

我正在使用最新版本的 mariadb 10.6.4。

有人知道如何为系统数据库设置正确的字符集和排序规则吗?

Tools\mariadb-winx64\bin\mysql_install_db.exe --datadir="Tools\mariadb-data" --password=PASSWORD --port=8137 --service=MyDB

在此处输入图片描述

[更新]

我尝试使用以下命令设置 my.cnf,但似乎没有效果:https://stackoverflow.com/questions/3513773/change-mysql-default-character-set-to-utf-8-in-my-cnf

还尝试使用不同的初始化不安全方法,但结果也一样。我使用正确的编码创建了 my.cnf,但仍然得到了错误的表编码:

mariadb-winx64\bin\mariadbd.exe --defaults-file=./my.cnf --initialize-insecure --datadir=./Test

和 my.cnf

[client]
default-character-set=utf8mb4


[mysql]
default-character-set=utf8mb4

[mysqld]
skip-grant-tables
port = 5137
collation-server = utf8mb4_unicode_ci
init-connect='SET NAMES utf8mb4'
character-set-server = utf8mb4

答案1

不要担心系统生成的表格(information_schema等)。任何修改它们的尝试都可能导致严重问题。

确实,utf8mb4 比 utf8mb3 更合理。但这个问题还是留给 MySQL 和 MariaDB 的开发人员去解决吧(总有一天)。

可能最适合你的表和连接必须为 utf8mb4。但您可以控制它们。

相关内容