MySQL’i dump’i importimisel lähevad UTF8 tähed katki

Igipõline probleem (vähemalt minul oli sellega päris palju probleeme) – teed mysql-baasist dump’i, impordid selle teise serverisse ja utf8 tähed kõik katki. Varem oli see suund live -> arendus, nii et tegelikult ei tulnud sellest väga muretki, aega (loe: viitsimist) ei olnud uurida ka. Ent nüüd asi probleem käsile võetud, natuke Googeldatud ja katsetatud ning lahendus on tegelikult suhteliselt lihtne

olgu mysql confis kirjas
[mysqldump]
default-character-set=latin1

ja baasi enda collation latin1… kuigi tegelikult hoitakse seal utf8 datat.

Tegevus peaks nüüd välja nägema nii:

mysqldump -u<username> -p –skip-set-charset <database> > <database>.sql

target masinas tuleb baas maha kustutada ning uuesti luua õige collationiga

CREATE DATABASE <database> DEFAULT CHARACTER SET utf8 COLLATE utf8_estonian_ci;

ja impordime andmed baasi öeldes et tegu on utf8 andmetega.

mysql -u<username> -p –default-character-set=utf8 <database> < <database>.sql

Alguses äratoodud conf on selles mõttes oluline, et kui latin1 asemel on näiteks ut8 siis tuleks dumpimisel kasutada võtit “–default-character-set=latin1” ning importimisel ei oleks character set’i vaja enam määrata.

Advertisements

Lisa kommentaar

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Muuda )

Twitter picture

You are commenting using your Twitter account. Log Out / Muuda )

Facebook photo

You are commenting using your Facebook account. Log Out / Muuda )

Google+ photo

You are commenting using your Google+ account. Log Out / Muuda )

Connecting to %s

%d bloggers like this: