Mám jednu databázu, z ktorej je potrebné skonvertovať latin_1
na utf8
, Táto konverzia nie je problém a v mojich pracovných prostrediach všetko funguje správne, keď do riadku my.cnf pridám riadky (ako je uvedené v túto otázku SO):
[client]
default-character-set = utf8
[mysqld]
collation-server = utf8_unicode_ci
init-connect="SET NAMES utf8"
character-set-server = utf8
A spustite príslušné ALTER príkazy:
ALTER TABLE {row} CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
Bohužiaľ táto databáza nesedí iba na serveri MySQL. Zdieľa server s niekoľkými databázami, ktoré stále používajú latin_1
kódovania a tieto databázy naozaj nemusia byť utf8
, Môžem mať rôzne kódovania zdieľať ten istý server a musím na to zmeniť predvolenú konfiguráciu? Alebo to vyžaduje problémy?
odpovede:
3 pre odpoveď č. 1Kódovanie skutočných údajov je založené na stĺpci, t.j. každý stĺpec v každej tabuľke môže mať odlišné kódovanie. Dáta sú transkódované za behu do / z kódovanie spojenia každý jednotlivý klient má; každý klient môže maťodlišné kódovanie pripojenia a každý klient môže nepretržite meniť kódovanie pripojenia. V konfiguračných súboroch nemusíte nič meniť; v skutočnosti by ste to nemali robiť, pretože to môže ovplyvniť správanie klientov, ktorí sa spoliehajú na predvolené hodnoty.
Stačí nastaviť vlastné nastavenia kódovania pre svojho klienta a vy ste v poriadku. Prečítajte si toto pre viac detailov.