[MySQL] kodowanie, problem z COLLATION?

0

Witam,

Mam tabele w bazie mySQL, ktora ma ustawioną metodę porównywania napisów na "latin1_general_ci". Jedno z pól w tej tabeli ma met. proówn = "latin2_general_ci".

Teraz przy probie wyszukiwania po tym polu, jeśli szukam polskich znaków (np. "ś"), wyrzuca błąd ("Illegal mix of collations (latin1_general_ci,IMPLICIT) and (utf8_unicode_ci,COERCIBLE) for operation 'like' ").

Probowalem ustawiac NAMES na latin2, collation_connection na latin2 ale nic nie pomaga :(

Robbocop

0

A możesz pokazać całe zapytanie?

0

Oczywiście. Oto przykladowe zapytanie, wraz z kodem PHP:

mysql_query("SET NAMES 'latin2'");
mysql_query("SET collation_connection = latin2_general_ci");	
$sql="SELECT user.id FROM users user INNER JOIN trip trip ON user.id=trip.id_user WHERE (user.username LIKE '%ń%' OR user.imie LIKE '%ń%' OR user.nazwisko LIKE '%ń%') GROUP BY user.id";
$result=mysql_query($sql);

while ($row=mysql_fetch_array($result)) {
...
...
...
}

Bez 2 pierwszych linijek (names i collation) dzieje sie tak samo wywala się. Jesli w zapytaniu nie ma polskich znakow, dziala poprawnie.

0

a jak sprubojesz :
WHERE (user.username REGEXP '\u0144' OR user.imie REGEXP '\u0144' OR .....

gdzie \u0144 jest ń, to cos sie zmieni ????

0
mwili napisał(a)

a jak sprubojesz :
WHERE (user.username REGEXP '\u0144' OR user.imie REGEXP '\u0144' OR .....
gdzie \u0144 jest ń, to cos sie zmieni ????

Tak nie przeszło, nie znalazł danych, choć też nie wyskoczył żaden błąd. Ale jak spróbowałem zamiast LIKE dać REGEXP, czyli :

WHERE (user.username REGEXP 'ń' OR user.imie REGEXP 'ń' OR .....

To znalazł wyniki bez błędów. Ciekawe...

1 użytkowników online, w tym zalogowanych: 0, gości: 1