it-swarm-eu.dev

Jak konfigurovat globální znakovou sadu na MySQL

Pokusil jsem se změnit znakovou sadu pro naši MySQL přes my.cnf a to se nezdařilo. Přidal jsem níže uvedené nastavení znakové sady:

# The MySQL server
[mysqld]
port            = 3306
socket          = /var/lib/mysql/mysql.sock
skip-locking
key_buffer = 16M
max_allowed_packet = 1M
table_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M

# ------------- MYSQL CHARSETS --------------
character_set_system = utf8
character_set_server = utf8
character_set_results = utf8
character_set_database = utf8
character_set_connection = utf8
character_set_client = utf8

collation_connection = utf8_general_ci
collation_database = utf8_general_ci
collation_server = utf8_general_ci

Když jsem je povolil, MySQL se nepodařilo spustit. Jak se mohu ujistit, že je ve výchozím nastavení utf8 - vždy?

Aktualizace

Stále existuje několik míst, která mají problémy s tím, že jsou UTF8

character_set_client    utf8
character_set_connection    utf8
character_set_database  latin1
character_set_filesystem    binary
character_set_results   utf8
character_set_server    latin1
character_set_system    utf8
character_sets_dir  /usr/share/mysql/charsets/
collation_connection    utf8_general_ci
collation_database  latin1_swedish_ci
collation_server    latin1_swedish_ci

Bohužel jsem ještě nepřišel s řešením ... nějaké nápady?

V současné době tuto konfiguraci úspěšně používám:

[mysqld]
default-character-set = utf8
init-connect='SET NAMES utf8'
character-set-server = utf8


[mysql]
default-character-set = utf8

Ale PHPMyAdmin stále zobrazuje nějakou latin1

character_set_client    utf8
character_set_connection    utf8
character_set_database  latin1
character_set_filesystem    binary
character_set_results   utf8
character_set_server    latin1
character_set_system    utf8
character_sets_dir  /usr/share/mysql/charsets/
collation_connection    utf8_general_ci
collation_database  latin1_swedish_ci
collation_server    latin1_swedish_ci
12
Webnet

Do svého souboru my.cnf musíte zahrnout následující položky

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8


[mysqld]
default-character-set = utf8    
collation-server = utf8_general_ci
init-connect='SET NAMES utf8'
character-set-server = utf8

Více informací naleznete na následujících stránkách manuálu

Pokud potřebujete odpovědět na Markovu odpověď, potřebujete-li převést existující tabulky/databáze na správnou znakovou sadu, budete potřebovat vhodný ALTER dotaz. Něco podobného níže:

ALTER TABLE `table` CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Alternativně je tu skvělý skript PHP skript zde , který to dělá za vás.

23
Ben Swinburne

Benova odpověď je v pořádku, ale změnou nastavení ABSOLUTNĚ NENÍ ZMĚNA existujících sad znakových sad nebo řazení. Udělejte to pomocí příslušného příkazu ALTER TABLE.

Pokud to nezadáte, vytvoří se tabulky ve výchozí znakové sadě databáze. Toto je nastavení pro jednotlivé databáze, které lze upravit pomocí ALTER DATABASE. To také není nastaveno v my.cnf.

2
MarkR