Portál AbcLinuxu, 10. května 2025 12:26

Dotaz: Mysql 4.0 -> 4.1

19.2.2007 04:53 Ivanhoej | skóre: 26 | blog: ss2_Debian | Bratislava
Mysql 4.0 -> 4.1
Přečteno: 360×
Odpovědět | Admin
Robil niekto uz update z Mysql 4.0 na Mysql 4.1?

Skusal som vsetko mozne ale diakritika sa rozhodi.

Potrebujem prehodit par webov v Drupale a par v Typo3 (tu sa mi zda ze nebol problem)

Asi je problem s latin1 konverziou do utf-8

Toto nezabralo -> http://drupal.org/node/105151

Vie niekto korektny postup

Skusal som i iconv ale tiez nic.

Vdaka
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

19.2.2007 08:48 devon | skóre: 3
Rozbalit Rozbalit vše Re: Mysql 4.0 -> 4.1
Odpovědět | | Sbalit | Link | Blokovat | Admin

Ahoj,

už jsem převáděl (je to trošku dýl) a největší problém byl s konverzí. Nejlepší je udělat dump, upgradovat, upravit hlavičku dump souboru na správné kódování a pak importovat.

Občas jsem narazil na db s MySql 4.1, kde byly data uložený v Latin2, ale db si myslela, že jsou v Latin1. Důsledkem bylo to, že při čtení z db ve formě Latin1 bylo možné následně zobrazit vše na stránkách správně v Latin2, ale nefungovalo správně řazení atp. Pokud bys narazil na tenhle problém, tak napiš, udělal jsem si na to malý php skript na opravu

Jo a je nezbytné správně nastavit kódování v jakém chceš data získávat a v jakém ukládat.

Libor

19.2.2007 09:00 zombik | skóre: 6
Rozbalit Rozbalit vše Re: Mysql 4.0 -> 4.1
Zdravím,

udělat dump a potom třeba použít program recode pro změnu kódování. Poté konvertovaný soubor znovu naimportovat do mysql.
#recode -l  <- vypíše všechna kódování co umí...

#recode latin1..UTF-8 < soubor.vstup > soubor.vystup
Jura
19.2.2007 09:16 razor | skóre: 33
Rozbalit Rozbalit vše Re: Mysql 4.0 -> 4.1
Odpovědět | | Sbalit | Link | Blokovat | Admin
imho stačí: mysqldump --default-character-set=latin1 .... > dump.sql a následně: mysql --default-character-set=latin1 < dump.sql
19.2.2007 09:19 razor | skóre: 33
Rozbalit Rozbalit vše Re: Mysql 4.0 -> 4.1
teda pokud jde o diakritiku. Jinak viz. zde
19.2.2007 13:04 Ivanhoej | skóre: 26 | blog: ss2_Debian | Bratislava
Rozbalit Rozbalit vše Re: Mysql 4.0 -> 4.1
Odpovědět | | Sbalit | Link | Blokovat | Admin
Teda jediny problem ma Drupal, a on to uklada pokial viem v UTF-8. tak nechapem ako sa to robi, ked mysql 4.0 je v latin1??

Henten convert *** som skusal ale nesiel, no robim komplet vsetky databazy asi to treba po jednej.

*** mysqldump --default-character-set=latin1 .... > dump.sql a následně: mysql --default-character-set=latin1 < dump.sql

A to nacitanie to uz predpokladm rovno do mysql 4.1 ? Ja som ale ten prepinas daval utf-8 :( to som asi zle? Ten druhy, urcite ma byt tiez latin1 ?

následně: mysql --default-character-set=utf-8 < dump.sql

???
19.2.2007 15:39 razor | skóre: 33
Rozbalit Rozbalit vše Re: Mysql 4.0 -> 4.1
No pokud data v tom DB v 4.1 mají být uloženy v utf8, tak by ti: mysql --default-character-set=latin1 nemělo fungovat.
19.2.2007 18:37 Ivanhoej | skóre: 26 | blog: ss2_Debian | Bratislava
Rozbalit Rozbalit vše Re: Mysql 4.0 -> 4.1
latin1 som tam nedaval ale utf-8 a nebolo to dobre.

Samo ze data su v utf-8 jed je to Drupal a ten ma uz roky utf-8, nevedel som ze Mysql ma taketo problemy s kodovanim, to neexistuje nejaky oficialny howto na to, pozeral som i na Mysql site ale nic poriadne tam nebolo.
19.2.2007 20:23 razor | skóre: 33
Rozbalit Rozbalit vše Re: Mysql 4.0 -> 4.1
Sorry, Drupal neznám a ani nechci :-). Mysql nemá problémy s kódováním. Problém je ten, že v rámci toho dumpu z mysql 4.0, je přídána k tabulkám informace o jejich kódování. Vypadá to nějak takhle: ENGINE=MyISAM DEFAULT CHARSET=latin1;. A to kódování u tabulky má větší váhu než nastavení pro server nebo databázi.

Takže pokud ty data mají být uložena v utf8 (zdůrazňuji uložena, protože je klidně můžu mít uložena v latin2 a výsledky mi to může vyhazovat v utf8 - je třeba rozlišovat mezi kódováním pro vzájemnou komunikaci mezi klientem a serverem a mezi kódováním, v kterém jsou data uložena na serveru), tak je třeba vykopat to latin1, narvat tam utf8, a překódovat ty data. Doporučuju snad něco takového (bez záruky :-) ):

mysqldump --default-character-set=latin1 databaze > dump.sql
sed -e 's/=latin1/=utf8/' dump.sql > dump2.sql
iconv -f(původní "implicitní" kódování dat v mysql - pro češtinu asi latin2) -tutf8 dump2.sql > utf8.dump.sql
mysql --default-character-set=utf8 databaze < utf8.dump.sql
Huh, snad je to dobře :)
19.2.2007 21:13 razor | skóre: 33
Rozbalit Rozbalit vše Re: Mysql 4.0 -> 4.1
uff, ještě možná bude potřeba jeden sed: sed -e "s/SET NAMES latin1/SET NAMES utf8/" dump2.sql. Já to teda zkoušel na mysql 5.0 ...
19.2.2007 21:21 Ivanhoej | skóre: 26 | blog: ss2_Debian | Bratislava
Rozbalit Rozbalit vše Re: Mysql 4.0 -> 4.1
Toto rucne prepisovanie som uz skusal, ale ked dam mysqldump --default-character-set=latin1 databaz > dump.sql

tak latin1 neda do toho vystupu, tam bude pes zakopany, cim to moze byt ?

Myslim text latin1 k tabulke.

Toto je vystup:
CREATE TABLE `access` (
  `aid` tinyint(10) NOT NULL auto_increment,
  `mask` varchar(255) NOT NULL default '',
  `type` varchar(255) NOT NULL default '',
  `status` tinyint(2) NOT NULL default '0',
  PRIMARY KEY  (`aid`)
) TYPE=MyISAM;
19.2.2007 21:29 razor | skóre: 33
Rozbalit Rozbalit vše Re: Mysql 4.0 -> 4.1
že já to zkoušim na mysql 5.0 :-) Hele co vyplivne:

echo "show variables like '%character%'" | mysql ?
19.2.2007 21:30 razor | skóre: 33
Rozbalit Rozbalit vše Re: Mysql 4.0 -> 4.1
jako pro to mysq 4.1
19.2.2007 22:22 Ivanhoej | skóre: 26 | blog: ss2_Debian | Bratislava
Rozbalit Rozbalit vše Re: Mysql 4.0 -> 4.1
Ja ma mysql 4.0 a chcem dat 4.1, tak neviem co urobi 4.1 ale ta tam ma i utf-8 co som skusal.

echo "show variables like '%character%'" | mysql
Variable_name   Value
character_set   latin1
character_sets  latin1 big5 cp1251 cp1257 croat czech danish dec8 dos estonia euc_kr gb2312 gbk german1 greek hebrew hp8 hungarian koi8_ru koi8_ukr latin1_de latin2 latin5 sjis swe7 tis620 ujis usa7 win1250 win1251ukr win1251
convert_character_set
20.2.2007 08:31 razor | skóre: 33
Rozbalit Rozbalit vše Re: Mysql 4.0 -> 4.1
Ty 4.1 se musí ještě nastavit aby to v utf8 ukládala. Obecně se v jakém kódování ukládat dá nastavit pro: sloupec, tabulku (což v tvém dumpu to info není), pro databází (to by si musel při tvorbě té databáze na 4.1 zadata něco jako create database x character set utf8, což si IMHO nedělal) a nebo pro server, což jsem chtěl zjistit pomocí toho show variable. Pro server se to dá nastavit v my.cnf .
[mysqld]
character-set-server = utf8
20.2.2007 14:13 Ivanhoej | skóre: 26 | blog: ss2_Debian | Bratislava
Rozbalit Rozbalit vše Re: Mysql 4.0 -> 4.1
Tak toto mi asi chybalo, lebo take forum bbs za pano nechcelo ist, ale tym padom odisla diakritika vsetkym databazam ktore mali latin1.

to neva vecer skusim DEFAULT CHARSET=utf8 COLLATE utf8_bin a malo by to ist, proste potom musia byt vsetky databazy aj s tymto parametrom vytvorene.

Uz mi to zacina byt jasne ta mysqlka s utf-8 ako funguje.

Dik.
21.2.2007 21:24 razor | skóre: 33
Rozbalit Rozbalit vše Re: Mysql 4.0 -> 4.1
Kdyžtak jsem na mysql a kódování napsal příspěvek do FAQ.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.