Důležitá nastavení v MySQL
Odesláno v September 14, 2005 | Kategorie MySQL | 2 Comments
Po úspěšné instalaci vývojového prostředí MySQL, PHP a Apache si dnes nastavíme znakovou sadu, kterou bude MySQL používat jako výchozí pro vytváření nových tabulek. Moje oblíbená je cp1250, tedy české Windows a stejně jako já ji používá i mnoho hostingů v kraji českém. Pokud chcete jinou, možností je přehršel.
Při nastavení Latin1 (Swedish), která je nastavena v MySQL jako výchozí, však dochází k překódování znaků při vkládání nebo exportu. Pokud bychom ponechali jako výchozí Latin1, připravujeme si živnou půdu pro mnoho budoucích problémů.
Jdeme na to.
Otevřeme soubor
C:/xampp/xampp/mysql/bin/my.cnf
a změníme řádky:
# The MySQL server
[mysqld]
old-passwords
port = 3306
socket = mysql
skip-locking
# default-character-set=utf8
character-set-server = cp1250
collation-server = cp1250_general_ci
key_buffer = 16M
max_allowed_packet = 1M
table_cache = 256
sort_buffer_size = 1M
read_buffer_size = 1M
read_rnd_buffer_size = 4M
net_buffer_length = 8K
myisam_sort_buffer_size = 64M
# log-bin
server-id = 1
thread_cache = 8
Restartujeme MySQL server. Nové tabulky se od této chvíle budou vytvářet v defaultní znakové sadě CP1250. Staré tabulky ale zůstanou v původní znakové sadě. U systémových je nám to šumák, ostatní budete muset zkonvertovat nebo radši vytvořit znovu.
Ověřujeme nastavení
Možná že si nejste jisti, zda se nám vše podařilo správně nastavit. Ověříme si to:
Spusťte databázovou konzoli
C:/xampp/xampp/mysql/bin/mysql.exe
a zadejte příkaz
show variables;
Středník na konci je důležitý, znamená ukončení řádku (příkazu). Vzápětí se nám zobrazí dlouhý výpis proměnných. Důležité jsou řádky
| character_set_database | cp1250 | | character_set_results | latin1 | | character_set_server | cp1250 | | character_set_system | utf8 | | character_sets_dir | C:/xampp/xampp/mysql/share/charsets/ | | collation_connection | latin1_swedish_ci | | collation_database | cp1250_general_ci | | collation_server | cp1250_general_ci | | concurrent_insert | ON |
Zbývající charsety v latin1 nás nezajímají, jsou to znakové sady požité pro připojení z konzole a v PHP si je nastavíme jinak.
Pozn.: Tento článek už je zastaralý, doporučuju používat ve skriptech zásadně znakovou sadu UTF-8.
Komentáře
2 Responses to “Důležitá nastavení v MySQL”
Váš komentář:
Předem se omlouvám, že to co zde “smolím” není komentář k výše uvedenému příspěvku, ale žádost o pomoc.
V případě že nastala situace, cituji: „Pokud bychom ponechali jako výchozí Latin1, připravujeme si živnou půdu pro mnoho budoucích problémů.“ existuje nějaké „jednoduché“ řešení vzniklé situace.
Předem děkuji za jakoukoliv odpověď.
S přáním příjemného (jak u koho) dne Eduard Klimek
Nevím přesně kde je problém, ale naposledy jsem to řešil přes export tabulky. Pro zjištění znakové sady pomůze “show create table xxx_tabulka”.
Pokud se tam vyskytuje jiný default charset než utf8, vyexportoval jsem celý výpis, překonvertoval v textovém editoru do UTF-8 a za každou definici tabulky jsem pak přidal DEFAULT CHARSET=utf8.
Jinak ihned po nastavení připojení k databázi nezaškodí poslat příkaz SET NAMES UTF8