[ CakNoris @ 15.05.2010. 20:58 ] @
Kako se vrsi prebacivanje cele BP u MySQL-u iz

latin1_swedish_ci (ili bilo koje druge)

u

ut8_general_ci

Da li je moguce da razlicite tabele imaju razliciti "collation"/encoding?
[ bogdan.kecman @ 15.05.2010. 23:03 ] @
ako promenis encoding za bazu - nista se nece desiti sa podacima
ako promenis encoding za tabelu - nista se nece desiti sa podacima

encoding za bazu definise "default" vrednost za encoding tabele
encoding tabele definis default vrednost za encoding polja

dakle sve to ima uticaj samo pri kreiranju polja koje nema definisan encoding (isto vazi i za collation).

enkoding/kolaciju baze menjas sa alter database
enkoding/kolaciju tabele menjas sa alter table

kao sto menjas i bilo koji drugi parametar

moguce je svako polje u svakoj tabeli u svakoj bazi da ima svoj encoding/collation, dakle kao sto rekoh, definicija encoding/collation-a je SAMO NA NIVOU JEDNOG POLJA, te vrednosti za tabelu i bazu sluze samo da bi polje dobilo neku vrednost ako pri kreiranju istog nijedna vrednost nije navedena.

obrati paznju da pri prebacivanju iz encodinga u encoding mysql prepisuje podatke (reenkodira ih) i da encoding ima veze samo sa tim kako mysql cuva podatke na disku, nema nikakve veze sa tim kako ce te podatke poslati klijentu niti kako ce ih od klijenta ocekivati (tome sluzi protokol encoding)

ako ti imas polje koje je latin1 ono je enkodirano na disku kao latin1 i moze da primi svojih dvestotinjak karaktera, ako ti je enkoding konekcije utf8 mysql ce ti te podatke u letu reenkodirati u utf8 i poslati klijentu utf8 karaktere a ne latin1, takodje ako imas polje koje je utf8 koje moze da primi svojih 16 miliona karaktera ce ako je konekcija latin1 enkodirana biti u stanju da klijentu posalje samo dvestotinjak karaktera dok ce svi ostali biti ?

sve si ovo btw mogao da nadjes u manualu u sekciji o karakter setovima