Λάθος sorting στη MySQL

Συζητήσεις για την βάση δεδομένων MySQL και το phpMyAdmin

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
Άβαταρ μέλους
elavd
Δημοσιεύσεις: 323
Εγγραφή: 16 Σεπ 2004 00:04
Τοποθεσία: Ιωάννινα

Λάθος sorting στη MySQL

Δημοσίευση από elavd » 22 Φεβ 2005 13:54

Έχω μια βάση σε mySQL και σε ένα πίνακα έχω κάποιες στήλες πχ. id, username, surname, sex κλπ.
Γράφοντας ένα ερώτημα της μορφής:

Κώδικας: Επιλογή όλων

SELECT username, surname, name, name FROM table WHERE sex='m' ORDER BY surname ASC
θα έπρεπε λογικά να παίρνω τα αποτελέσματα ταξινομημένα με βάση το επώνυμο (το οποίο είναι καταχωρημένο με ελληνικούς χαρακτήρες στο πεδίο surname). Όμως αυτό δε γίνεται...
Αν αντίθετα γράψω

Κώδικας: Επιλογή όλων

ORDER BY username ASC
όπου τα usernames είναι με λατινικούς χαρακτήρες, η ταξινόμηση είναι μια χαρά.
Τι μπορεί να φταίει?
Εικόνα

Άβαταρ μέλους
Tanaka
Δημοσιεύσεις: 174
Εγγραφή: 27 Απρ 2004 21:40
Τοποθεσία: Κορωπί

Λάθος sorting στη MySQL

Δημοσίευση από Tanaka » 22 Φεβ 2005 16:35

Φταίει το character set της mysql. Για να υποστηρίζει σωστά Ελληνικά ώστε να σου ταξινομεί σωστά τα ονόματα θα πρέπει να αλλάξεις το mysql.ini και στην ιδιότητα default-character-set να την ορίσεις ίση με greek.

Κώδικας: Επιλογή όλων

default-character-set=greek

Άβαταρ μέλους
elavd
Δημοσιεύσεις: 323
Εγγραφή: 16 Σεπ 2004 00:04
Τοποθεσία: Ιωάννινα

Λάθος sorting στη MySQL

Δημοσίευση από elavd » 22 Φεβ 2005 16:52

Thanks Tanaka! ;)
Εικόνα

Άβαταρ μέλους
elavd
Δημοσιεύσεις: 323
Εγγραφή: 16 Σεπ 2004 00:04
Τοποθεσία: Ιωάννινα

Λάθος sorting στη MySQL

Δημοσίευση από elavd » 23 Φεβ 2005 11:37

Δε μπορώ να βρω το mysql.ini της mysql. Στα windows υπάρχει ένα αντίστοιχο αρχείο my.ini αλλά στο Linux δε μπορώ να το βρώ...
Εικόνα

Άβαταρ μέλους
Rapid-eraser
WebDev Moderator
Δημοσιεύσεις: 6851
Εγγραφή: 05 Απρ 2003 17:50
Τοποθεσία: Πειραιάς
Επικοινωνία:

Λάθος sorting στη MySQL

Δημοσίευση από Rapid-eraser » 23 Φεβ 2005 11:43

sto linux.

tsekare sto /etc/my.cnf

n av dev iparxei ksekiva tnv mysql me --defaults-file="/path/to/cnf.file"

to pio pi8avov eivai va miv va miv exeis ka8olou my.cnf n my.ini opote exei fortosei ta defaults
Cu, Rapid-eraser, Tα αγαθά copies κτώνται.
Love is like oxygen, You get too much you get too high
Not enough and you're gonna die, Love gets you high

Άβαταρ μέλους
elavd
Δημοσιεύσεις: 323
Εγγραφή: 16 Σεπ 2004 00:04
Τοποθεσία: Ιωάννινα

Λάθος sorting στη MySQL

Δημοσίευση από elavd » 23 Φεβ 2005 12:02

Βρήκα το my.cnf και γράφει:

Κώδικας: Επιλογή όλων

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

[mysql.server]
user=mysql
basedir=/var/lib

[safe_mysqld]
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
Μήπως πρέπει εκεί να προσθέσω:
default-character-set=greek
?
Εικόνα

Άβαταρ μέλους
elavd
Δημοσιεύσεις: 323
Εγγραφή: 16 Σεπ 2004 00:04
Τοποθεσία: Ιωάννινα

Λάθος sorting στη MySQL

Δημοσίευση από elavd » 23 Φεβ 2005 12:13

OK το έκανα!
Εικόνα

Άβαταρ μέλους
cordis
Administrator, [F|H]ounder, [C|S]EO
Δημοσιεύσεις: 27626
Εγγραφή: 09 Οκτ 1999 03:00
Τοποθεσία: Greece
Επικοινωνία:

Λάθος sorting στη MySQL

Δημοσίευση από cordis » 23 Φεβ 2005 13:15

πως τελικά;
Δεν απαντάω σε προσωπικά μηνύματα με ερωτήσεις που καλύπτονται από τις ενότητες του forum. Για ο,τι άλλο είμαι εδώ για εσάς.
- follow me @twitter

Άβαταρ μέλους
elavd
Δημοσιεύσεις: 323
Εγγραφή: 16 Σεπ 2004 00:04
Τοποθεσία: Ιωάννινα

Λάθος sorting στη MySQL

Δημοσίευση από elavd » 23 Φεβ 2005 13:21

Στο my.cnf πρόσθεσα τη γραμμή default-character-set=greek. Δηλαδή:

Κώδικας: Επιλογή όλων

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
default-character-set=greek

[mysql.server]
user=mysql
basedir=/var/lib

[safe_mysqld]
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
Στη συνέχεια έκανα restart την mySQL service και έπαιξε μια χαρά! Thanks!:D:D
Εικόνα

Άβαταρ μέλους
iNDEFiX
Honorary Member
Δημοσιεύσεις: 2569
Εγγραφή: 20 Δεκ 2002 00:48
Τοποθεσία: κλειστή λόγω έργων
Επικοινωνία:

Λάθος sorting στη MySQL

Δημοσίευση από iNDEFiX » 23 Φεβ 2005 18:32

Tyxeroulh... ego exo se 2 servers mysql 4.1.x kai exei provlima me ta ellinika, den doulevoun me afto ton tropo giati exoun ksexorista charsets se kathe table/column ktl. Fadasou pos prepei na ta kaneis binary unsigned + latin1 charset gia na piasei to shorting! Klaps!

Episis an theleis vale kai ta parakato sto my.cnf gia best performance xoris kanena kolima ;)

Κώδικας: Επιλογή όλων

skip-locking
key_buffer = 16M

max_allowed_packet = 2M
max_connections = 300
max_user_connections = 200

table_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
myisam_sort_buffer_size = 8M

[mysqldump]
quick
max_allowed_packet = 20M

[mysql]
no-auto-rehash

[myisamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout


Απάντηση

Επιστροφή στο “MySQL”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες