Puncte:0

mysql_install_db set de caractere și colare greșite

drapel in

Creez un nou server cu instrumentul mysql_install_db. Setează datele corecte, portul, parola, serviciul etc. Dar problema mea este că setul de caractere și colaţionarea tabelelor mele de bază sunt greşite. Ele trebuie să fie utf8mb4 și utf8mb4_general_ci.

Nu găsesc o modalitate de a schimba aceste tabele cu instalarea. Când schimb my.cnf/my.ini, se schimbă doar pentru bazele de date nou create. Dar, deoarece mysql_install_db creează bazele de date de sistem, acestea sunt create greșit.

De asemenea, se pare că msyql_install_db.exe meu nu acceptă un argument de fișier implicit.

Altceva este, de asemenea, ciudat. Dacă rulez comanda pentru a crea o nouă bază de date, va folosi și utf8mb3 în timp ce am setat în mod explicit COLLATE la utf8mb4_unicode_ci.

CREAȚI BAZĂ DE DATE DACĂ NU EXISTĂ tt SET DE CARACTERE IMPLICIT utf8mb4 COLLATE utf8mb4_unicode_ci

Folosesc mariadb 10.6.4, care este cea mai recentă versiune.

Știe cineva cum să configureze setul corect de caractere și colaţionarea în bazele de date ale sistemului?

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

introduceți descrierea imaginii aici

[Actualizați]

Am încercat să configurez my.cnf cu următoarele, dar pare să nu aibă efect: https://stackoverflow.com/questions/3513773/change-mysql-default-character-set-to-utf-8-in-my-cnf

De asemenea, am încercat să folosesc o modalitate diferită cu inițializare-nesigură, dar și aceleași rezultate. Am creat un my.cnf cu codificarea corectă, dar tot am primit codificarea tabelului greșit:

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

Și 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Ă NUMELE utf8mb4'
set de caractere-server = utf8mb4
Puncte:1
drapel ua

Nu vă faceți griji cu privire la tabelele generate de sistem (schema_informatiei, etc). Orice încercare de modificare a acestora poate duce la probleme serioase.

Adevărat, are sens să fie utf8mb4, nu utf8mb3. Dar lăsați acea conversie la latitudinea dezvoltatorilor MySQL și MariaDB să o rezolve (într-o zi).

Aceasta este probabil cel mai bine pentru ta tabelele și conexiunile să fie utf8mb4. Dar tu ai control asupra lor.

drapel in
Problema este că folosesc conectorul .NET, care nu acceptă UTF8MB3, și vreau să văd dacă există o bază de date. Unde am nevoie de tabelele de sistem.
drapel ua
@Niels - `utf8mb3` este un sinonim pentru `utf8`. Ar trebui să fie interschimbabile. _Nu puteți_ folosi `utf8mb4_unicode_ci` cu nici unul. Prima parte a colaționării trebuie să se potrivească cu setul de caractere.
drapel ua
@Niels - și puteți `SELECTA` un tabel utf8mb3 chiar și atunci când `SET NAMES utf8mb4` este în vigoare. Poate am pierdut unde este problema.
drapel in
Am eliminat interogarea mea `SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = @name` și doar fac o `CREATE DATASE IF NOT EXISTS`. Deci nu am nevoie să citesc din tabelele utf8mb3.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.