MySQL kai character set

Thomas Venieris mot at freemail.gr
Tue May 22 01:01:57 EEST 2007


On Monday 14 May 2007 21:54, Nikos Kanellopoulos wrote:
> Μάλλον τα έκανα λίγο θάλασσα.
>
> Ας τα πάρουμε από την αρχή. Όταν ξεκίνησα μια βάση mysql, δεν πείραξα
> το character set, οπότε χρησιμοποιήθηκε το default latin1. Τα δεδομένα
> που έβαζα ήταν iso-8859-7.  Δεν είμαι σίγουρος, αλλά φαίνεται πως το
> latin1 είναι 8-bit, οπότε δεν παρατήρησα κανένα πρόβλημα. Εκτός ίσως
> από το collation, που το ανακάλυψα πρόσφατα.

Το κόλπο είναι το εξής:

Πρέπει να κάνεις dump την βάση, ορίζοντας το encoding που χρησιμοποιεί 
(latin1) και ταυτόχρονα να εμποδίσεις το mysqldump να ορίσει encoding με την 
SET NAMES. Πιο συγκεκριμένα, πρέπει να κάνεις το εξής:

mysqldump --skip-opt --add-drop-table --add-locks --quick --extended-insert --lock-tables --disable-keys --default-character-set=latin1 --skip-set-charset  -u<username> -p<password> 
<databasename> > <filename>

Θα παρατηρήσεις οτι το dump αρχείο δεν θα έχει εντολή SET NAMES μέσα, και οι 
πίνακες δεν θα ορίσουν default charset. Επισης βρες τα ελληνικά μέσα στο dump 
και διαπίστωσε οτι φαίνονται σωστά (και δεν βλέπεις ?????). Μπορείς πλέον να 
κάνεις restore το αρχείο αυτό με την:

mysql -u<username> -p<password> --default-character-set=<charset> 
<OTHER_databasename> < <filename>

όπου charset είναι αυτό που ΞΕΡΕΙΣ οτι έχουν τα δεδομένα σου, δλδ greek αν 
είναι ISO-8859-7 ή utf8 αν είναι UTF-8.

ΠΡΟΣ ΘΕΟΥ δοκίμασέ το πριν το κάνεις στα πραγματικά σου δεδομένα, και έχε 
ΑΝΤΙΓΡΑΦΟ ΑΣΦΑΛΕΙΑΣ.

Καλή τυχη.


-- 
moT

"There's the television. It's all right there. It's all
right there. Look. Listen. Kneel. Pray. Commercials."
                                           (12 Monkeys)




More information about the Linux-greek-users mailing list