Sziasztok,
Tudom-tudom hasonló címmel már jó pár topic van, de sajnos egyikben sem találtam a lényeget, így kérem segítsetek, ha van ötletetek.
Szeretnék mysql adatbázist költöztetni két szerver között.
Mindkettön mysql 5.1 fut. Mindkét mysql konfigurációja megegyezik (utf8 minden lehetséges paraméter, a diff szerint a my.cnf-ben sincs eltérés).
Mindkettön ugyanaz a verziószámú apache fut 5.3-as php-val, suphp módosítással.
A problémám a következö:
ha mysqldump-al kidumpolom az egyik szerveren az adatbázist, majd a másik szerveren mysql paranccsal beimportálom, akkor a weben a helyes ékezetes betük helyet krix-krax-ok jelennek meg.
pl: Megújultunk! -> Megújultunk!
Ugyanez a helyzet, ha ezt a müveletet phpmyadmin-al teszem meg a dump fájlt letöltésével, majd a másik oldalon feltöltésével.
Néztem a dump fájlt mindkét szerveren (átmásolás elött és után), ugyanaz.
Néztem a szervereken lévö adatbázis tartalmat, ránézésre a kérdéses részeknél ugyanaz. Bár sajnos a phpmyadmin is hasonló krix-kraxokat jelenít meg mindkét szerveren, hiába írja mindenhol, hogy UTF8 a karakterkódolás. (A böngészö is UTF8-on van minden esetben).
Az apache konfigurációja megfelelö, a diff szerint szintén ugyanaz mindkét szerveren.
Elvetemültségemben már az egész /var/lib/mysql könyvtárat is átmásoltam arra a szerverre ahol gond van a kódolással, de a helyzet változatlan maradt.
Egy rövid kis php mysql lekérdezést írva szintén a második szerveren jeletkezik a kódolási hiba, Az elsön megfelelöen jelennek meg az ékezetek.
Próbáltam a --default-character-set=utf8 kapcsolót megadni mind az adtbázis exportálásakor, mind az importálásakor, de a helyzet sajnos változtatlan.
Már nincs tippem hirtelen hol keressem a megoldást.
Az apache lenne a hibás, vagy a php konfig? De ez ugyanaz mindkét szerveren...
Tudnátok valami tippel szolgálni a megoldáshoz, ha már valaki találkozott hasonló hibával?
- 2925 megtekintés
Hozzászólások
my.cnf -be rakd be ezeket:
default-character-set=utf8
default-collation=utf8_general_ci
character-set-server=utf8
collation-server=utf8_general_ci
init-connect='SET NAMES utf8'
- A hozzászóláshoz be kell jelentkezni
Részben már benne voltak ezek a paraméterek, de sajnos a helyzeten az említett további paraméterek beírása sem változtatott. (Söt mondhatni rosszabb lett a helyzet, még furcsább karakterek jelennek meg az importálás után)
Részlet a jelenlegi my.cnf-emböl:
[client]
default-character-set=utf8
[mysqld]
#eredetileg benn volt
default-character-set=utf8
character-set-server = utf8
collation-server = utf8_general_ci
#beírtam
default-collation=utf8_general_ci
init-connect='SET NAMES utf8'
Az említett paraméterek többségét a client szekcióban nálam nem is fogadta el a mysql. Látszólag újraindult, de mikor kapcsolódásra került volna a sor kiírta, hogy ismeretlen paraméter.
- A hozzászóláshoz be kell jelentkezni
Ha az eredeti adatbázisban már rosszul "látszanak" phpmyadminban a sorok akkor először javítsd meg, hogy helyesen látszanak és utána másold át az új adatbázisba. A problémát az okozza, hogy nem volt megfelelő a karakterkódolás az INSERT -eknél (ezért kell többek között a init-connect='SET NAMES utf8'). Gyorsan csinálj egy scriptet php-ba és utf8_decode segítségével javítsd ki az adatbázist. Példa: http://pastebin.org/146640
- A hozzászóláshoz be kell jelentkezni
Köszönöm!
Valószínü tényleg ez lehet a probléma, mert egy UTF8-as joomla adatbázissal nincs semmi gond, ott megfelelöen látszik minden magyar ékezet a phpmyadmin-ban is.
- A hozzászóláshoz be kell jelentkezni
Köszönöm mégegyszer a segítségeket.
Eddig úgy tünik, hogy sikerült a php-val cserélni/konvertálni a hibás bejegyzéseket.
Így már valóban UTF8-ként minden karakter megfelelöen jelenik meg a phpmyadmin-ban, konzolon, és a dump fájlban is. Azaz valóban azt a karaktert látni, ami meg is jelenik.
A müvelet végülis úgy nézett ki, hogy a "hibás" adatbázis át lett töltve az A szerverröl a B szerverre, majd php-ben írt kód segítségével lettek a hibás szövegek átkonvertálva.
Érdekes mód valamelyik szöveg windows-1252-es kódolással vált olvashatóvá, némelyiket (pl: fckeditor által szerkesztett) pedig csak keresés-cserével lehetett javítani.
- A hozzászóláshoz be kell jelentkezni
Szervusz !
Nálam (valószínűleg) az a körülmény okozott problémát, hogy a rendszer karakterkódolása eltérő.
A fejlesztőrendszer Mandriva UTF-8 -on dolgozik , míg a szerver Debian-Lenny iso-8859-2 -n (ez utóbbit saját magam választottam.)
CSZ
- A hozzászóláshoz be kell jelentkezni
PHP elején, vagy amiben fejlesztés van, legyen egy ilyen:
header("Content-type: text/html; charset=utf-8");
- A hozzászóláshoz be kell jelentkezni
A mysql karakterkodolos problemak nyitja, hogy mysqlben csak az oszlopoknak van karakterkodolasa, tehat ha meg van adva a tabladefinicioban, hogy az adott pl. varchar karakterkodolasa milyen, akkor hiaba allitassz be a szerver konfiguracioban barmi. A tobbi (pl. tabla karakterkodolasa, szerver karakterkodolasa) olyan defaultok, amik akkor jutnak ervenyre, ha a semaban az oszlopnal, tablanal, stb. nincs megadva semmi, es alulrol megy felfele. En megneznem, hogy magaban a sema definicioban nincs-e beallitva valami a problemas oszlopoknal.
- A hozzászóláshoz be kell jelentkezni
Az összes schema táblát és azok paramétereit átnéztem, amik ide vonatkozhatnak. Amit találtam az mind utf8 illetve utf8_general_ci és hasonlók.
Tudsz esetleg valami konkrétabbat mondani hol keressek, mit nézzek?
- A hozzászóláshoz be kell jelentkezni