. Я создаю новый сервер с помощью инструмента 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
Также пробовал использовать другой способ с инициализацией-insecure, но результаты те же.. Я создал 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
Не беспокойтесь о сгенерированных системой-таблицах(information_schema
и т. д.). Любая попытка изменить их может привести к серьезным проблемам.
Правда, для них имеет смысл быть utf8mb4, а не utf8mb3. Но оставьте это преобразование разработчикам MySQL и MariaDB, чтобы они (когда-нибудь)исправили это.
Это вероятно, лучше всего для ваших таблиц и соединений использовать utf8mb4. Но у вас есть власть над ними.