Рейтинг:0

mysql_install_db неправильная кодировка и сопоставление

флаг in

Я создаю новый сервер с помощью инструмента mysql_install_db. Он устанавливает правильный каталог данных, порт, пароль, службу и т. Д. Но моя проблема в том, что кодировка и сопоставление моих базовых таблиц неверны. Они должны быть utf8mb4 и utf8mb4_general_ci.

Я не могу найти способ изменить эти таблицы при установке. Когда я изменяю my.cnf/my.ini, он меняется только для вновь созданных баз данных. Но поскольку mysql_install_db создает системные базы данных, они создаются неправильно.

Также похоже, что мой msyql_install_db.exe не принимает аргумент файла по умолчанию.

Странно и другое. Если я запускаю команду для создания новой базы данных, она также будет использовать utf8mb3, в то время как я явно устанавливаю COLLATE в utf8mb4_unicode_ci.

СОЗДАТЬ БАЗУ ДАННЫХ, ЕСЛИ НЕ СУЩЕСТВУЕТ tt НАБОР СИМВОЛОВ ПО УМОЛЧАНИЮ utf8mb4 COLLATE utf8mb4_unicode_ci

Я использую последнюю версию mariadb 10.6.4.

Кто-нибудь знает, как настроить правильную кодировку и сопоставление с системными базами данных?

Инструменты\mariadb-winx64\bin\mysql_install_db.exe --datadir="Инструменты\mariadb-данные" --пароль=ПАРОЛЬ --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

И мой .cnf

[клиент]
набор символов по умолчанию = utf8mb4


[mysql]
набор символов по умолчанию = utf8mb4

[mysqld]
пропустить грант-таблицы
порт = 5137
сервер сопоставления = utf8mb4_unicode_ci
init-connect='УСТАНОВИТЬ НАЗВАНИЯ utf8mb4'
сервер набора символов = utf8mb4
Рейтинг:1
флаг ua

Не беспокойтесь о сгенерированных системой таблицах (информационная_схема, и т.д). Любая попытка изменить их может привести к серьезным проблемам.

Правда смысл им быть utf8mb4, а не utf8mb3. Но оставьте это преобразование на усмотрение разработчиков MySQL и MariaDB (когда-нибудь).

Это является наверное лучше всего для твой таблицы и соединения должны быть utf8mb4. Но у вас есть власть над ними.

флаг in
Проблема в том, что я использую коннектор .NET, который не поддерживает UTF8MB3, и я хочу посмотреть, существует ли база данных. Где мне нужны системные таблицы.
флаг ua
@Niels - `utf8mb3` является синонимом `utf8`. Они должны быть взаимозаменяемы. Вы _не можете_ использовать `utf8mb4_unicode_ci` ни с одним из них. Первая часть сопоставления должна соответствовать набору символов.
флаг ua
@Niels - и вы можете «ВЫБРАТЬ» таблицу utf8mb3, даже когда действует «УСТАНОВИТЬ ИМЕНА utf8mb4». Возможно, я потерялся в том, где проблема.
флаг in
Я удалил свой запрос `SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = @name` и просто сделал `CREATE DATASE IF NOT EXISTS`. Так что мне не нужно читать из таблиц utf8mb3.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.