Převod "starých" MySQL databází do nového kódování
od aichi
Pokud si pod slovem starý představíme projekt na MySQL 4.0 a níže, zjistíme při jeho převodu do nového MySQL, že z důvodu chybějící definice kódování máme zaděláno na problém. S tímto problémem jsem se dříve dlouho potýkal a nedávno jsem opět musel jeden projekt převádět, proto jsem oprášil svůj návod, který dávám v plén.
...
Prvním úkolem je dumpnout databázi v kódování, ve kterém jsou data uložena. Většinou jsem měl data v cp1250. Já na to používám phpMyAdmin. Používám historickou verzi, kde jde nastavit jazyk, resp. kódování stránky na windows-1250 a tudíž ukládáný dump dat bude také v tomto kódování.
Druhým úkolem bylo pro mě data převést na UTF8, protože jsem weby také převáděl na UTF8 a navíc řazení v MySQL pro cp1250 v češtině je case sensitive a to není úplně vhodné.
Pokud má dump do pár mega, jde převést např. v PSPadu, pokud má víc, převádím ho pomocí příkazu iconv.
Převod je také možný pomocí importování dat do nového DB stroje pomocí konzole a zpetný dump, pomocí mysqldumpu. Při dumpu jsou data už v UTF8. Data přes konzoli lze nasypat do DB takto:
use temp_database;
set names cp1250;
source /cesta_k_dumpu/dump.sql
Třetím krokem je naimportovat UTFkový dump do databáze na novém DB stroji. A to je vše, odteď jsou data v nové databázi v UTF a máme klid. Samozřejmě musíme mít na paměti při vytváření databáze na novém stroji to abychom definovali jako výchozí znakovou sadu UTF8 a porovnání např. utf8_general_ci nebo utf8_czech_ci, jinak si data naimportujeme do tabulek s definicí špatného kódování a řazení, protože DUMP ze staré databáze žádnou definici kódování a řazení pro vytvářené tabulky neobsahuje!
Adresy zpětných odkazů pro tento příspěvek:
Trackback URL (right click and copy shortcut/link location)
1 komentář
Jako Vy přes PSPad a šlo to. Nyní jsem ale něco zkonil a nevím co.
Prostě všechny tabulky mají po zobrazení dobrou češtinu, háčky také, ale na ostrém webu se pak zobrazují u některých slov otazníky...
DB prostě nezná znak a tak ho nahradí tímto ??
Už mě to leze na nervy. Takto jsem transformoval několik webů a vše je OK. Tady nemohu češtinu rozjet v souborech news.php a articles.php
Tabulky mám "porovnání" CHARSET=utf8 COLLATE=utf8_unicode_ci , už jsem měl i utf8_general.ci a pořád stejný výsledk.
Fór je možná v tom,že původní news a articles byly ve Windows-1250. Ale nejde převést ani Panely, je to divný.
Ahoj!
08. 04. 09 23.43:51, 
