Převod "starých" MySQL databází do nového kódování

od aichi E-mail

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ář

Komentář od: Kvido [Návštěvník] E-mail
KvidoZaujala mě zde diskuze o převádění starých DB na nové na jiném webu. Už jsem to několikrát dělal.
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!
18. 09. 09 @ 12:22

Napsat komentář


Vaše e-mailová adresa nebude zveřejněna.

Adresa Vašich WWW stránek bude zveřejněna.
(Konce řádku budou převedeny na <br />)
(Jméno, email a webová stránka)
(Dovolí ostatním uživatelům kontaktovat Vás prostřednictvím formuláře pro zprávy (Vaše e-mailová adresa NEBUDE zveřejněna.))