Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: LIKE case-insensitive
Forum PHP.pl > Forum > Bazy danych > MySQL
soomal
LIKE wywołany w bazie wyszukuje nazwy dla "%Żył%", nie znajduje dla "%żył".
Problem pewnie leży w tym, że znaki są zapisane w bazie w ISO-8859-2, a kodowanie (metoda porównywania napisów w phpMyAdmin) ustawione na latin1_swedish_ci, przez to engine bazy nie potrafi dobrze przetłumaczyć małych liter na duże, dużych na małe więc jest czuły na wielkość znaku.
Zmiany charsetu dla bazy nie pomogła (latin2_general_ci), dla tabel też. Zmiana charsetu dla poszczególnych kolumn wywołuje błąd:
http://forum.php.pl/lofiversion/index.php/t25622.html , który jest bugiem mysql nienaprawionym od 2004. Dodatkowo konwersja na latin2 a potem z powrotem na latin1 skopała mi kodowanie (zamiast znaków polskich były '?').

Więc zrzuciłem dumpa i wszędzie gdzie było latin1 ustawiłem latin2, ale po dodaniu takiej bazy okazało się, że występuje znów błąd (illegal mix of collations latin1, latin2). Okazało się (po show variables like "charset%"), ze character_set_server=latin1. Zmiana na latin2 nie pomogła.

Może ktoś już miał taki problem i potrafi poradzić?
erix
Zrzut masz na pewno w latin2?

SET NAMES na początku użyłeś?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.