Skocz do zawartości

Sortowanie Polskich Znaków - Konfiguracja Mysql


jureczek

Rekomendowane odpowiedzi

Zainstalowałem i uruchomiłem na FC5 Apacha z PHP i Mysql. Wszystko hula przyzwoicie z małym wyjątkiem. Otóż po zapisie do tabeli w bazie danych i sortowaniu polskie znaczki (np. Ś, Ł) lądują w kolejności po W, czyli na końcu listy. Z moich poszukiwań w googlach wynika, że powinienem zmienić konfigurację Mysql (/etc/my.cnf). Próbowałem różnych opcji - rezultat jest taki, że wspomniane znaczki podczas sortowania i tak lądują nie tam gdzie trzeba. Ten sam skrypcik uruchomiony na komercyjnym serwerku działa jak trzeba.

Może ktoś ma pomysł jak do tego podejść i rozwiązać mój problemik? Będę wdzięczny za wszelkie sugestie!

 

Mój my.cnf po (wielu) zmianach:

[client]
port        = 3306
socket        = /var/lib/mysql/mysql.sock
default-character-set=latin2
character-sets-dir=/usr/share/mysql/charsets

# The MySQL server
[mysqld]
port        = 3306
socket        = /var/lib/mysql/mysql.sock
skip-locking
key_buffer = 16K
max_allowed_packet = 1M
table_cache = 4
sort_buffer_size = 64K
read_buffer_size = 256K
read_rnd_buffer_size = 256K
net_buffer_length = 2K
thread_stack = 64K
default-character-set=latin2
default-collation=latin2_general_ci
character-sets-dir=/usr/share/mysql/charsets
init-connect="SET NAMES latin2"
language = /usr/share/mysql/polish/

# Don't listen on a TCP/IP port at all. This can be a security enhancement,
# if all processes that need to connect to mysqld run on the same host.
# All interaction with mysqld must be made via Unix sockets or named pipes.
# Note that using this option without enabling named pipes on Windows
# (using the "enable-named-pipe" option) will render mysqld useless!
# 
#skip-networking
server-id    = 1

[mysqldump]
quick
max_allowed_packet = 16M
character-sets-dir = /usr/share/mysql/charsets/
default-character-set = latin2

[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates
default-character-set=latin2
character-sets-dir = /usr/share/mysql/charsets/

[isamchk]
key_buffer = 8M
sort_buffer_size = 8M

[myisamchk]
key_buffer = 8M
sort_buffer_size = 8M

[mysqlhotcopy]
interactive-timeout

 

Mysql wer. 5.0.22

 

 

Wynik polecenia 'locale' w konsoli:

LANG=pl_PL.UTF-8
LC_CTYPE="pl_PL.UTF-8"
LC_NUMERIC="pl_PL.UTF-8"
LC_TIME="pl_PL.UTF-8"
LC_COLLATE="pl_PL.UTF-8"
LC_MONETARY="pl_PL.UTF-8"
LC_MESSAGES="pl_PL.UTF-8"
LC_PAPER="pl_PL.UTF-8"
LC_NAME="pl_PL.UTF-8"
LC_ADDRESS="pl_PL.UTF-8"
LC_TELEPHONE="pl_PL.UTF-8"
LC_MEASUREMENT="pl_PL.UTF-8"
LC_IDENTIFICATION="pl_PL.UTF-8"
LC_ALL=

 

Stronki, które realizują połączenie z bazą pisane w kodowaniu iso-8859-2

 

Polecenie echo mysql_client_encoding(); daje wynik 'Latin1'.

 

Jeszcze raz z góry dziękuję za zainteresowanie tematem, pozdrawiam!

 

 

 

 

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...