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
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
http://dev.mysql.com/doc/refman/5.6/en/charset-configuration.html
http://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_character_set_system
http://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_character_set_server
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.
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.