Я создаю новый сервер с помощью инструмента mysql_install_db. Он устанавливает правильный datadir, порт, пароль, службу и т. д. Но моя проблема в том, что кодировка и сортировка моих базовых таблиц неверны. Они должны быть utf8mb4 и utf8mb4_general_ci.
Я не могу найти способ изменить эти таблицы при установке. Когда я изменяю my.cnf/my.ini, он изменяется только для вновь созданных баз данных. Но поскольку mysql_install_db создает системные базы данных, они создаются неправильно.
Также похоже, что мой msyql_install_db.exe не принимает аргумент defaults-file.
Еще кое-что странное. Если я запущу команду создания новой базы данных, она также будет использовать 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
Также пробовал использовать другой способ с initializing-insecure, но тоже те же результаты. Я создал my.cnf с правильной кодировкой, но все равно получил неправильную кодировку таблицы:
mariadb-winx64\bin\mariadbd.exe --defaults-file=./my.cnf --initialize-insecure --datadir=./Test
И мой.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. Но вы можете контролировать их.