Witam. Mam nietypowy problem, być może BUG serwera MySQL.
Próbowałem posortować listę nazw zakodowanych utf8_general_ci, ale dostałem nieprawidłowy wynik. To samo otrzymałem przy utf8_polish_ci. Testowałem te same zapytania na innym serwerze, gdzie wszystko działa zgodnie z oczekiwaniami.
Poniżej uproszczone maksymalnie zapytania:
CREATE TABLE test (id SERIAL,litera VARCHAR(4) collate utf8_polish_ci NOT NULL) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;
INSERT INTO test (litera) VALUES ('a'),('A'),('ą'),('Ą'),('b'),('B'),('c'),('C'),('ć'),('Ć'),('d'),('D'),('e'),('E'),('ę'),('Ę'),('f'),('F'),('g'),('G'),('s'),('S'),('ś'),('Ś');
SELECT * FROM test ORDER BY litera;
Wersja mojego MySQL (mysql --version):
Ver 14.14 Distrib 5.1.49, for debian-linux-gnu (x86_64) using readline 6.1
Wynik u mnie (kolejność liter):
a A Ę ą ś Ą Ć ć Ś ę b B C c d D e E F f g G s S
Wynik na drugim serwerze:
a A ą Ą b B c C ć Ć d D e E ę Ę f F g G s S ś Ś
Sortowanie wg wielkości znaków nie ma dla mnie znaczenia.
Na google'ach znalazłem tylko informacje o problemach z sortowaniem (ignorowanie DESC) właśnie w wersji 5.1.49 MySQL pod Ubuntu.
Jeżeli ktoś spotkał coś podobnego lub ma jakiś pomysł (oprócz ustawienia kodowania latin2) to proszę o pomoc.
Z góry dziękuję.