PDA

Pogčedajte punu verziju : Eksport i import MySQL baze


Dragan Babić
14. 12. 2005., 16:22
Pošto mi se sprema promena hosta (Goran zna o čemu pričam) naleteo sam na sledeći problem. Kada sam eksportovao svoju bazu na postojećem hostu, probao sam da je importujem na localhost (XAMPP server), čisto da se upoznam sa procesom pošto ga ranije nisam obavljao, desi mi se to da se characterset pojebe totalno.

U pitanju je baza moje instalacije Textpatterna i znaimljivo mi je to što svaki sledeći unos ne prihvata naše karaktere, nego nastavlja da cepa upitnike. Kod eksporta baze nisam (barem mislim da nisam) imao opciju izbora enkodinga baze, ali je sama baza u latin1. Pri importu sam probao i latin1, latin2 i utf sa istim rezultatima.

Da li neko zna u čemu je problem i kako se rešava?

Petar Marić
14. 12. 2005., 17:36
Ostavi kod dump-a kao zip, ili ga stavi na www.pastebin.com ako nije prevelik pa ću pogledati.
Značilo bi mi ako mi kažeš koje su verzije i enkodinzi remote i local MySQL servera.

zextra
14. 12. 2005., 19:06
vrlo moguce da ti se razlikuju verzije mysql servera (najverovatnije da kod kuce imas 4.1.x a na hostu 4.0.x). ja licno nisam imao problema sa charset podrskom, mada je ta podrska bolja u 4.1 nego u 4.0. koji charset koriste char polja u tabelama?

Dragan Babić
14. 12. 2005., 19:19
jedan je 4.1.3 valjda a drugi je 4.1.0. Nego čačkao sam nešto po textpatternu i tu se kolju charsetovi. trebalo bi da se ili poklapaju ili da jedan od njih bude utf8.

Evo i članka koji sam našao na temu: http://wion.com/journal/moving-a-live-textpattern-site-to-a-local-server
mada on ne objašnjava kako da ispravim to. Pretpostavljam da je u samoj bazi problem?

Petar Marić
14. 12. 2005., 19:33
Upravo je to i bio problem zextra - ja sam to rešavao sledećim hackom.
1. Uvezem dump
2. Izvezem samo strukturu.
3. Izmenim originalni dump tamo gde treba i to radi.
Naravno, ne bi bilo loše da je sama baza u koju uvoziš tabele (čak je veoma poželjno) bude i sama utf-8 enkodirana.

PS: Kako uvoziš dump? Ako je preko phpmyadmin, da li si ga podesio da on sam koristi utf-8 kao default enkoding konekcije?

Dragan Babić
14. 12. 2005., 19:45
PS: Kako uvoziš dump? Ako je preko phpmyadmin, da li si ga podesio da on sam koristi utf-8 kao default enkoding konekcije?Yup, stavim da ga uveze kao utf-8.

Petar Marić
14. 12. 2005., 21:58
Ja sam tvoj dump uvezao bez problema, vidim sva naša slova. Jesi li siguran da je problem do baze, a ne softvera koji njoj pristupa?

Nego, što imaš toliki broj html entiteta u bazi?

PS: Sad sam nešto gledao - imaš prilično "debelu" bazu :)

Dragan Babić
15. 12. 2005., 12:08
Pojma nemam, nijesam ništa "čačkao", to je textpatternova baza.

Pihhh, sad imaš privatno moj blog :)

Uvozim ga kroz PHPMyAdmin, odem na SQL>dam lokaciju .txt fajla, kažem da je gzippovan, postavim encoding na utf i on mi napravi haos. Može biti da je do XAMPPa?

Sanja
09. 08. 2006., 20:05
Dragane jesi uspio rjesiti ovaj problem? imam slican..doma mi je bilo sve OK al kad sam uplodovala stranicu umjesto nasih slova pojve se ?. ustvari umjesto č.š je ok :)

Dragan Babić
09. 08. 2006., 20:45
Imao sam taj problem, ali je nekim cudom nestao. Goran i ja smo nesto cackali, i niko nije nista uradio u sustini i svi karakteri su odjednom bili prikazani kako treba, ja sam samo malo procackao encoding u configu textpatterna (promenio, uploadovao, ucitao stranicu, vratio na staro, uploadovao, ucitao stranicu i sve je bilo ok.).

Od tada sam vise puta radio export/import baze, ali je sve bilo ok, mislim da je problem pravila verzija TXPa 4.0.2, od kako samo upgradeovao na 4.0.3 nema problema.

bluesman
09. 08. 2006., 20:49
KAd smo kod toga, ja sam primetio nesto vezano za PHPMyAdmin. Nedavno smo postavljali neki sajt na srpskom i koristili PHPMyADmin koji koristim samo kada moram, naravno nastao je haos sa nasim karakterima iako je sve lepo setovano i encoding i language i sve zivo. Onda sam uzeo sa neki svojim scriptom, koji koristim vec skoro 10 godina uz sitne prepravke, uradio import i sve je bilo super.

Ono sto NECU da kazem je da je PHPMyAdmin krsh, ali ono sto hocu da kazem je da ocigledno ima problem sa UTF-8.

Ilija Studen
09. 08. 2006., 20:59
Ima problema samo kada je cela stvar loše konfigurisana (a to uglavnom nije do phpMyAdmina, on samo pokušava da radi po knjizi). Da bi koristio Unicode stavi collation na utf8_unicode_ci i nakon konektovanja reci MySQL da želiš Unicode: SET NAMES 'utf8'.

Ako su u bazi latin1 podaci, a phpMyAdminu kažeš da koristi Unicode normalno da ćeš dobiti papazjaniju.

Možda je ključno pitanje ovde kako latin1 prebaciti u Unicode pošto treba da se odradi import. Ti se na žalost nisam previše bavio, imao sam tu sreću da mi prethodni podaci nisu bili bitni pa se nisam morao cimati :D

bluesman
09. 08. 2006., 21:32
Da bi koristio Unicode stavi collation na utf8_unicode_ci i nakon konektovanja reci MySQL da želiš Unicode: SET NAMES 'utf8'.

Ako su u bazi latin1 podaci, a phpMyAdminu kažeš da koristi Unicode normalno da ćeš dobiti papazjaniju.

Molim te malo elaboriraj ovo, nisam siguran da razumem sta hoces da kazes, nadam se da ne govoris ono sto ja mislim da pokusavas da kazes :)

Sanja
09. 08. 2006., 21:50
ajde mozda i meni nekim cudom sve proradi :)

Dragane hvala

Ilija Studen
09. 08. 2006., 22:10
Jedna slika, 'iljadu reči.

1. Pravilno konfigurisan phpMyAdmin + pravilno uneseni podaci
2. Pravilno konfigurisan phpMyAdmin + malo zeznuti podaci

U prvom slučaju su podaci unošeni u unicode kolonu i character set konecije je utf8. U drugom slučaju su unicode podaci unošeni u latin1 kolonu uz latin1 konekciju (ekvivalenta situacije je kada podatke unosiš u verziju baze koja nema podršku za unicode - MySQL < 4).

Skripta je u oba slučaja radila kako treba jer PHP sam po sebi ne pravi razliku (možda se čini kao feature, ali je u stvari veliki propust)! Međutim, phpMyAdmin pravi tako da podaci koji navodno rade u određenoj skripti ne rade jer su nepravilni - pogrešni.

Kompletna poenta: da ne bi dobijao kuke i kvake u phpMyAdminu i podaci i phpMyAdmin treba da budu pravilno podešeni. Ako si imao takvih problema to je jasan znak da nešto ne valja.

Eksperti za MySQL i dokumentacija (http://mysql.com/doc/refman/5.0/en/charset.html) mogu dati više detalja... Mene su na rešenje naveli drugi (lepa stvar kod open source projekta je što ne moraš ti da kopaš za svim informacija, neko dođe i u dve prostoproširene ti objasni taman toliko koliko je dovoljno da nešto odradiš kako treba). Od tada nema nikakvih problema ni sa importom ni sa exportom. Sve radi kako treba...

Zero-Cool
09. 08. 2006., 23:43
A najjednostavnije je objasnjenje nemojte koristiti phpmyadmin jer on pravi sranja koja u sustini i ne moraju da se ispravljaju, meni se desavalo da mi on prikaze papazjaniju a kada skriptu pokrenem ona normalno iz baze ucita sve nase karaktere bez ikakvih problema.

Znaci sto Goran kaze to je jedan veliki krsh, ali je zgodan za brzo pregledanje i moze se srediti da bude male velicine za upload na server (ako ne postoji).

Ilija Studen
10. 08. 2006., 00:15
A najjednostavnije je objasnjenje nemojte koristiti phpmyadmin jer on pravi sranja koja u sustini i ne moraju da se ispravljaju, meni se desavalo da mi on prikaze papazjaniju a kada skriptu pokrenem ona normalno iz baze ucita sve nase karaktere bez ikakvih problema.

Znaci sto Goran kaze to je jedan veliki krsh, ali je zgodan za brzo pregledanje i moze se srediti da bude male velicine za upload na server (ako ne postoji).

Opet ponavljam, greška je do skripte, ne do phpMyAdmina. Prosto ignorisanje problema uz obrazloženje "Ionako je krš, nemoj koristiti" uopšte ne rešava sam problem. Rešenje je jednostavno: koristi unicode za kolone i koristi utf8 konekciju na bazu. Simple.

Sanja
11. 08. 2006., 18:35
ehh kad bi bilo tako "Simple" :)

gosn.prirodni
13. 08. 2006., 13:28
Ja sam ovih dana imao slične probleme sa importom MySQL UTF-8 baze uz phpMyAdmin. Sve deluje ok, podesim encoding i baze ali kad izvučem podatke na stranu dobijem kuke-i-kvake.

Rešio sam na ovaj način: kad uspostavim konekciju ka bazi a pre bilo kojeg SQL upita uradim mysql_query("SET NAMES 'utf8'", $konekcijaKaBazi)... i stvar radi. Možda nekom i ovo pomogne.