Illegal mix of collations

metallic

Новичок
Illegal mix of collations

Торрент-трекер torrentpier 0.35
Иногда в статусе торрент-клиента выскакивает такая вот ошибка, выяснить когда и от чего это происходит не удается. Ошибка выозникает редко, помогает перезапуск клиента (иногда не с первого раза). Скажите, куда копать?


DB error :: tr_announcer.php (380) :: [SQL:1267]

SELECT * FROM phpbb_bt_tracker WHERE torrent_id = XXXX AND peer_id = 'XXXX-уџX§Аh®?uъ' LIMIT 1 :: Illegal mix of collations (utf8_general_ci,IMPLICIT) and (cp1251_general_ci,COERCIBLE) for operation '='


Вываливается на вот этом коде:

PHP:
// Get peer info from previous announce $lp_inf (last peer info) if available
$sql = 'SELECT *
	FROM '. BT_TRACKER_TABLE ."
	WHERE torrent_id = $torrent_id
		AND peer_id = '$peer_id_sql'
	LIMIT 1";

if (!$result = $db->sql_query($sql))
{
	error_exit('DB error', __FILE__, __LINE__, 'db');
}
 

DiMA

php.spb.ru
Команда форума
версия МыСКЛа? тип поля peer_id?
смени тип поля peer_id на VARBINARY/BINARY/BLOB или кодировку сравнения
в старых версиях мыскла я видел такую же ошибку при вставке бинарных данных в VARCHAR (хотя никакого криминала в этом нем)
 

metallic

Новичок
версия мускула 5.0.51a, вся база и поле в utf8


>>смени тип поля peer_id на VARBINARY/BINARY/BLOB или кодировку сравнения
Тут не понял, можно поподробнее?
 

metallic

Новичок
DiMA
Данные от этого не покорежатся в поле?

-~{}~ 29.12.08 13:25:

Пробую на тестовой базе

До изменения
-BC0071-nг/<ђT|Jж

После
-BC0071-nг/<ђT|J

Запись укоротилась на два символа и так со веми записями, от 2 до 4 символов укорачиваются
 

DiMA

php.spb.ru
Команда форума
Ошибка устранена?
Урезка из-за конвертации поля или при записи/чтении?

-~{}~ 29.12.08 13:29:

попробуй свежую версию базы, в 5.0.67-log такой ошибки уже нет
 

metallic

Новичок
>>Ошибка устранена?
Хз, я ж пока пробую на тестовой базе

>>Урезка из-за конвертации поля или при записи/чтении?
Меню тип понля через phpmyadmin и все, данные во всех записях обрезаются.
Смотрю также через phpmyadmin

>>попробуй свежую версию базы, в 5.0.67-log такой ошибки уже нет
Т.е. если поставить эту версию, то Illegal mix of collations сама по себе исчезнет?
 

DiMA

php.spb.ru
Команда форума
почему оно там обрезается - не ко мне... думай сам (экспорт/импорт сделать, длину побольше, проверить ЗАПИСЬ и ЧТЕНИЕ программно, тип иной полей и т.д. - вариантов куча)

Не знаю, что будет у тебя, а у меня на 2х версиях базы один запрос выдавал ошибку, другой нет (импорт дампа через mysql.exe). На старой версии я поставил VARCHAR -> VARBINARY, на новой и так работало.
 
Сверху