[ halex @ 24.01.2006. 22:34 ] @
Pomagajte ako znate (iskusan MySQL administrator po mogućstvu)....


Dakle, u lokalu na Windowsu imam MySQL verziju 4.1.14, a na serveru na Linuxu (Debian) imam MySQL verziju 4.0.24 i phpMyAdmin 2.6.2

1. Uradim export baze (100MB velika) na Windows-u iz DOS command prompt-a sa MySQL komandom mysqldump -h localhost -u username -p moja_baza > export.sql
2. Otvorim taj fajl u UltraEdit-u i izbacim napolje sve ono sto mi moze predstavljati problem u kompatibilnosti sa importom na nižu verziju, a to je par ključnih reči na kraju svakog CREATE TABLE gde se postavlja COLLATION... Inače baza sadrži YU znake u kodingu ISO-8859-2 i to tako da su naši znaci zapisani ovako:
(ž = ¾) (š = ¹) (Ž = ®) (Š = ©) (Č = È) (č = è),...
U UltraEdit-u napravim konverziju DOS->Unix tip fajla, LF podesim za Linux, snimim kao UTF-8 NO BOM (vidim regularno sva naša slova kao ove simbole koje sam napisao)
3. Prenesem zipovan fajl sa FTP-om na Linux server i tamo ga odzipujem
4. Napravim import baze iz tog prenesenog fajla mysql -h localhost -u username -p moja_baza < export.sql

PROBLEM!!!
Naša slova su potpuno pogrešno prenesena i kao da sam imao Unicode UTF-16, tačnije od svakog mog YU slova su nastala 2 znaka (16 bita)...
(Ž = ÂŽ) (Č = È) (Š =Š)

Taj fajl na Linuxu je drugačiji definitivno od onog na Windows-u. Kako da ga napravim jednakim na Linuxu odnosno mogu li ga nekako prethodno obraditi na Windowsu da je validan i na Linuxu (identičan kao što ga vidim na Windowsu jer to su validni podaci)?

Ima li neki dobar program na Linuxu za Search&Replace. Preko Putty-ja se konektujem na Linux server i startovao sam bio "mc" ali i on kaže da mu je prevelik fajl za editovanje - oko 80MB...

Import preko web forme u phpMyAdminu ne dolazi u obzir posto nema šanse da bazu od 100MB prenesem tako - trebao bi mi ceo dan da seckam deo po deo jer ne može tekst polje da primi toliko teksta (IE puca a Firefox se drži malo bolje)...

[ halex @ 25.01.2006. 16:25 ] @
Da pojasnim....

Problem se sveo na to da je datoteka mojabaza.sql koju hoću da importujem preko komande mysql -h localhost -u korisnik -p moja_baza < mojabaza.sql snimljena kao Unicode UTF-8 i ta komanda za import ne zna to pravilno da pročita i da importuje onako kako ja to vidim kada otvorim u UltraEdit-u.
Ako u konzoli otvorim taj fajl vidim bezveze znakove - tačnije u ASCII formatu mislim...
Ima li rešenje da nateram mysql import da pročita Unicode znakove?
[ Dejan Topalovic @ 25.01.2006. 17:20 ] @
Hm, da li si siguran da ti UltraEdit nije tu nesto poremetio?

Ako smatras da nije, onda se spoji na Linux server i ukucaj:
Code:
 iconv -f UTF-8 -t ISO-8859-2 mojabaza.sql -o mojabaza_konvertovana.sql

pa onda pokusaj importovati bazu:
mysql -h localhost -u username -p moja_baza < mojabaza_konvertovana.sql

Ako to ne ide, pokusaj da export (dump) baze uradis sa charsetom latin1, pa da onda pokusas importovati bazu.
Hint: --default-character-set=latin1 .

Poigraj se malo sa tim parametrom --default-character-set.
[ halex @ 25.01.2006. 23:02 ] @
Sređeno u UltraEditu. Nakon dumpa baze napravio sam jedan search & replace naših karaktera č,Č,ć,Ć koji su bili problematični i sve to snimio kao Unix fajl a u ASCII formatu i import na Linuxu je prošao odlično.