Prenumeruok RSS

MySQL collation cp1257 to utf8

« »

Neseniai rašiau apie problemą kai perėjus prie MySQL5 atsirado problema su UTF-8 duomenis. Taigi google užklausos nepadėjo nie kiek, tad teko pagalvoti logiškai, ir sprendimą radau.

Situacija

Duomenų bazės, lentelių, stulpelių collation yra cp1257
Duomenys išsaugoti UTF-8 formatu.
Duomenims įterpti dar nenaudojams SET NAMES, SET CHARSET

Užduotis

Sutvarkyti taip, kad būtų teisingi collcate.

Sprendimas

PHPMyAdmin ar kitos toolsas kuris pritaikytas mysql 4.1 ar mysql 5 tikrai netinga. Nes juose jau naudojamas set names, set charset ko pasekoje duomenis tampa sugadinti. Ką gi vadinasi reikia tools’o kuris nenaudotu exportuojant jų. Išvada darom backup’ą be setnames. Paieškojęs phpclasses susiradau elemantarią klasikę padarančią duomenų bazės backupą, kaip ir tikėjausi ji nenaudoja specifinių SET NAMES, SET CHARSET. Kadangi kaikurių lentelių dydis gan didelis ir PHP pradeda keiktis kai per daug duomenų patenka į RAM, teko ją optimizuoti eksportuoti po vieną lentelę.

Paleidus skriptą ji eksportuoja duomenis teisingai. Tereikia paredaguoti struktūra nurodant teisingą collation (Šiuo atveju pakeičiant cp1257 į UTF8) pvz

pakeičiant į

žinoma ir rekomenduotina pačios lentelės collation pakeiti jau į teisingą.

Leave a Reply

Your email address will not be published. Required fields are marked *

> home
  • Apie mane
  • Apklausos
  • Blogas
  • Lietblogs Search
  • Nuorodos
  • Reklama mano bloge
  • Search
  • Tags
  • Testas
  • Projektai
  • Kontaktuok
  • Archyvas