Προς το περιεχόμενο

MySql και Ελληνικά


ni_kuho

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα,

έχω μία βάση σε MySql (έχω την έκδοση 5.0.22 )στην οποία θέλω να φορτώσω εγγραφές στα ελληνικά. Το πρόβλημά μου είναι ότι ό,τι charset κ να βάλω για τον πίνακα, δε μπορώ να τις φορτώσω (έχω δοκιμάσει αρκετά..). Μου βγάζει πάντα ένα μήνυμα λάθους ότι η εγγραφή δε χωράει στο πεδίο του πίνακα (είναι varchar κ το μέγεθος που έχω βάλει είναι υπεραρκετό).

Το search σε google κ insomnia δεν απέδωσε αφού όλα αυτά που συνιστούσαν τα παιδιά πολύ απλά δε δουλεύουν σε μένα..

Όποια βοήθεια, ευπρόσδεκτη..Ευχαριστώ..

Δημοσ.

Γενικά μας τα λές...Αν μας δώσεις συγκεκριμένο παράδειγμα. Από που προσπαθείς να κάνεις την εισαγωγή?

Δημοσ.

mysql> show columns from errormessages;

+----------------+--------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+----------------+--------------+------+-----+---------+-------+

| eID | int(11) | NO | PRI | | |

| ID_CODE | varchar(255) | YES | | NULL | |

| ID_DESCRIPTION | varchar(255) | YES | | NULL | |

+----------------+--------------+------+-----+---------+-------+

3 rows in set (0.28 sec)

 

mysql> insert into errormessages values(222,"αδφααφ","σδγσδγσδγσδη");

Query OK, 1 row affected (0.09 sec)

 

mysql> select * from errormessages;

+-----+---------+----------------+

| eID | ID_CODE | ID_DESCRIPTION |

+-----+---------+----------------+

| 222 | αδφααφ | σδγσδγσδγσδη |

+-----+---------+----------------+

1 row in set (0.00 sec)

 

Απλό παράδειγμα χωρίς να κάνω τπτ παραπάνω από install τη βάση!

Τώρα αν προσπαθείς μέσω jdbc ίσως πρέπει να βάλεις win-1253 encoding

 

δες εδώ

 

http://en.wikipedia.org/wiki/Character_encoding

Δημοσ.

Ένας από τους πίνακες στους οποίους προσπαθώ να εισάγω εγγραφές στα ελληνικά, είναι ο παρακάτω:

 

CREATE TABLE Groups (

Group_ID INTEGER NOT NULL DEFAULT 0,

Description VARCHAR(100),

Notes VARCHAR(100),

PRIMARY KEY (Group_ID)

)ENGINE=INNODB;

 

Τώρα η εισαγωγή γίνεται από το command line της mysql..

Έχω ένα αρχείο .sql που περιέχει τα δεδομένα του κάθε πίνακα και τα φορτώνω σε αυτόν με την εντολή source.

Μία από τις εγγραφές που εισάγω για τον παραπάνω πίνακα, είναι η εξής:

 

INSERT INTO Groups VALUES(1,'Διαχειριστές','Πλήρης Πρόσβαση');

 

Το πρόβλημα είναι, ότι η mysql μόλις το κάνω αυτό, μου βγάζει το εξής μήνυμα:

 

ERROR 1406 (22001): Data too long for column 'Description' at row 1

 

Αυτό μου το βγάζει μόνο όταν προσπαθώ να εισάγω ελληνικούς χαρακτήρες. Όταν εισάγω λατινικούς δεν υπάρχει κανένα πρόβλημα.

Προσπάθησα να το λύσω δοκιμάζοντας πολλούς συνδυασμούς charsets και collations στη γραμμή:

 

)ENGINE=INNODB;

 

του παραπάνω πίνακα. Όμως δεν είχε αποτέλεσμα..

Ελπίζω να έγινα πιο κατανοητός..

 

@djapal

δε μου δουλεύει αυτό που λες..

Το πρόβλημα είναι ότι δε δέχεται ελληνικά..

Δημοσ.

To paketo to eixa faei kai gw kai ellega oti kalytera na eimai kinezos programmatisths. pio poly yposthri3h tha eixa.

 

loipon kaneis query apla:

 

SET NAMES 'GREEK';

 

prin apo to travhgma h thn prosthikh.

Δημοσ.
Προσπάθησα να το λύσω δοκιμάζοντας πολλούς συνδυασμούς charsets και collations στη γραμμή:

 

Στην προσπάθεια σου να λύσεις το πρόβλημα ίσως έχασες κάπου την μπάλα. Είναι συνήθες το φαινόμενο.

 

Όταν λες command line της mysql? Από window ή linux console?

Τι encoding έχει το column "Description"?

Έχω την αίσθηση ότι η εισαγωγή των δεδομένων πάει να γίνει σε Unicode.

Δημοσ.

Ευχαριστώ για τις γρήγορες απαντήσεις σας.

 

@djapal

Δεν είναι αυτό το πρόβλημά μου. Αυτό που λες μου βγάζει πάλι το ίδιο μήνυμα λάθους.

 

@Hatman

Ίσως κάτι μου διαφεύγει αλλά αυτό δε λειτουργεί..

Δηλ. αφήνω τον πίνακά μου ως έχει, και πριν δώσω:

INSERT INTO Groups VALUES(1,'Διαχειριστές','Πλήρης Πρόσβαση');

δίνω:

SET NAMES 'GREEK';

Αυτό μου βγάζει το ίδιο μήνυμα λάθους που ανέφερα παραπάνω..

 

@Cue

Έχω windows xp, και για να διαχειριστώ τη βάση μου, χρησιμοποιώ τον MySql command line client, που μου δίνει η MySql. Αυτό εννοώ με το command line της MySql..

 

Τώρα μερικά από τα πράγματα που δοκίμασα προσπαθώντας να λύσω το πρόβλημα, ήταν να προσθέσω στη ν τελευταία γραμμή του πίνακα, κάποιο από τα παρακάτω (όχι όλα μαζί εννοείται..):

 

)ENGINE=INNODB DEFAULT CHARSET utf8;

ή

)ENGINE=INNODB DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

 

EDIT:

Για κάποιο μαγικό τρόπο δούλεψε με το παρακάτω:

)ENGINE=INNODB DEFAULT CHARSET greek;

Λέω μαγικό γιατί θυμάμαι ότι το είχα δοκιμάσει..Τι να πω..

Ευχαριστώ πάντως για τις απαντήσεις σας.

Δημοσ.

re sy mhpws den exeis sta regional settings ta ellhnika epilegmena kai s'to ebgaze ayto? s'emena pantws den ebgale tpt kai oute charset oute tpt den ebala.

Tespa, afou doulepse....!! ;)

Δημοσ.

Μα το περίεργο είναι ότι δεν άλλαξα κάτι..

Κ θυμάμαι να είχα δοκιμάσει το DEFAULT CHARSET greek..Αλλά ναι, αφού τελικά δούλεψε..

  • 2 εβδομάδες αργότερα...
Δημοσ.

Ξεθάβω το θέμα γιατί τα προβλήματα με τα ελληνικά δε λύθηκαν..

Όλα καλά όταν εισάγω τις εγγραφές μία μία..Πριν την εισαγωγή δίνω set names greek κ έχω κ default charset greek στους πίνακές μου..κ όλα μια χαρά.

Όταν όμως προσπαθώ να τις φορτώσω μαζικά (τις έχω αποθηκευμένες σε ένα αρχείο .sql κ του κάνω source) τότε έχω πάλι πρόβλημα με τα ελληνικά..

(η ακριβής περιγραφή του προβλήματος καθώς κ παράδειγμα της βάσης μου, βρίσκονται παραπάνω..)

Ευχαριστώ..

Δημοσ.

Hatman, ευχαριστώ για τη βοήθεια..

Αυτό δούλεψε τελικά..Ευτυχώς δηλαδή, γιατί είχα αρχίσει να απελπίζομαι με τη MySql κ την υποστήριξη της για τα ελληνικά..

Δημοσ.
Hatman' date=' ευχαριστώ για τη βοήθεια..

Αυτό δούλεψε τελικά..Ευτυχώς δηλαδή, γιατί είχα αρχίσει να απελπίζομαι με τη MySql κ την υποστήριξη της για τα ελληνικά..[/quote']

 

 

Otan douleya thn ptyxiakh mou elega oti tha eixa kalyterh yposthri3h an hmoun kinezos programatisths para ayto to pragma. telika thn apanthsh thn eixa brei sto epishmo site ths mysql sto manual gia to locale.

 

Asta na pane.

 

Mono pou den yparxei san entolh se mysql 4 opwte prepei na einai to collation se greek alliws thn pathses!!!

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...