Ich erstelle einen neuen Server mit dem Tool mysql_install_db. Es legt das richtige Datenverzeichnis, den richtigen Port, das richtige Passwort, den richtigen Dienst usw. fest. Mein Problem ist jedoch, dass der Zeichensatz und die Sortierung meiner Basistabellen falsch sind. Sie müssen utf8mb4 und utf8mb4_general_ci sein.
Ich kann bei der Installation keine Möglichkeit finden, diese Tabellen zu ändern. Wenn ich my.cnf/my.ini ändere, ändert sich das nur für neu erstellte Datenbanken. Da mysql_install_db aber die Systemdatenbanken erstellt, werden sie falsch erstellt.
Es sieht auch so aus, als ob meine msyql_install_db.exe kein Standarddateiargument akzeptiert.
Noch etwas ist seltsam. Wenn ich den Befehl zum Erstellen einer neuen Datenbank ausführe, wird auch utf8mb3 verwendet, obwohl ich COLLATE explizit auf utf8mb4_unicode_ci gesetzt habe.
CREATE DATABASE IF NOT EXISTS tt DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
Ich verwende MariaDB 10.6.4, die neueste Version.
Weiß jemand, wie man den richtigen Zeichensatz und die richtige Sortierung für die Systemdatenbanken einrichtet?
Tools\mariadb-winx64\bin\mysql_install_db.exe --datadir="Tools\mariadb-data" --password=PASSWORD --port=8137 --service=MyDB
[Aktualisieren]
Ich habe versucht, my.cnf wie folgt einzurichten, aber es scheint keine Wirkung zu haben:https://stackoverflow.com/questions/3513773/change-mysql-default-character-set-to-utf-8-in-my-cnf
Habe auch versucht, eine andere Methode mit „initializing-insecure“ zu verwenden, aber auch hier das gleiche Ergebnis. Ich habe eine my.cnf mit der richtigen Kodierung erstellt, aber trotzdem die falsche Tabellenkodierung erhalten:
mariadb-winx64\bin\mariadbd.exe --defaults-file=./my.cnf --initialize-insecure --datadir=./Test
Und 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
Antwort1
Machen Sie sich keine Sorgen um die systemgenerierten Tabellen ( information_schema
usw.). Jeder Versuch, sie zu ändern, könnte zu ernsthaften Problemen führen.
Es stimmt, es macht Sinn, dass sie utf8mb4 und nicht utf8mb3 sind. Aber überlassen Sie diese Konvertierung den Entwicklern von MySQL und MariaDB, die sie (irgendwann) beheben müssen.
EsIstwahrscheinlich am besten fürdeinTabellen und Verbindungen müssen UTF8MB4 sein. Sie haben jedoch die Kontrolle über sie.