Autor Zpráva
Prophet_TX7
Profil
Zdravím,

vytvořil jsem si v MySQL databázi vlastní fci SKL_NUM, která přebírá dva parametry, potřebuji jí hodit do WHERE a porovnat její výsledek s řetězcem, výraz vypadá takto:

SKL_NUM(odkaz, vyrobky_baleni.id) LIKE '%{$_POST['slovo']}%'


Krásně mi to běží na firemním testovacím serveru, ale když to hodím na ostrý, nastává velký problém (a je jedno jestli tam je LIKE nebo = ):

Illegal mix of collations (utf8_czech_ci,COERCIBLE) and (utf8_general_ci,COERCIBLE)

částečné řešení je do dotazu připsat:
COLLATE utf8_general_ci

problém je, že takováto nebo podobná podmínka se vyskytuje v celém systému na mnoho místech v mnoha souborech, proto bych to rád vyřešil nějak jinak, na jednom místě

PHP skript pro připojení vypadá následovně:

	mysql_connect($promene['mysql_server'],$promene['mysql_user'],$promene['mysql_pass']);
	mysql_select_db($promene['mysql_select_db']);
	mysql_query ('SET character_set_client=utf8');
	mysql_query ('SET collation_connection=utf8_czech_ci');
	mysql_query ('SET character_set_connection=utf8');
	mysql_query ('SET character_set_results=utf8');
	mysql_query ("set names utf8");


co s tím?

děkuji
Joker
Profil
Prophet_TX7:
Tipnul bych, že sloupec v té tabulce má nastavené porovnávání utf8-general-ci, zatímco se mu snažíte vnutit utf8-czech-ci - něco takového.
Prophet_TX7
Profil
[#2]
Nejedná se o sloupec, ale o funkci..
když toto vyzkouším v phpMyAdminu, vyhodí to tu samou chybu, ale jakmile změním spojení v něm na utf8_czech_ci, už to běží..
ale toto spojení mám i ve svém skriptu a neběží :-(

viz mysql_query ('SET collation_connection=utf8_czech_ci');
Joker
Profil
Nepomohlo by tohle? http://forums.mysql.com/read.php?26,6528,15661
Prophet_TX7
Profil
Joker: děkuji, ale už jsem to vyřešil :-)

Vím, že teď budu za blbce, že si sám odpovím chvilku po zadání dotazu, ale už jsem to řešil celý den, pak napíšu dotaz a zachvilku na to přijdu, zákon schválnosti :-D

místo těch 5 řádků, stačil jeden:

mysql_query ('SET NAMES utf8 COLLATE utf8_czech_ci');


pravděpodobně je na ostrém serveru nastavena jiná znaková/porovnávací sada databáze

Snad to někomu i pomůže :-)
Toto téma je uzamčeno. Odpověď nelze zaslat.