Торрент-трекер torrentpier 0.35 Иногда в статусе торрент-клиента выскакивает такая вот ошибка, выяснить когда и от чего это происходит не удается. Ошибка выозникает редко, помогает перезапуск клиента (иногда не с первого раза). Скажите, куда копать? Код (Text): DB error :: tr_announcer.php (380) :: [SQL] SELECT * FROM phpbb_bt_tracker WHERE torrent_id = XXXX AND peer_id = 'XXXX-уџX§Аh®?uъ' LIMIT 1 :: [code]Illegal mix of collations (utf8_general_ci,IMPLICIT) and (cp1251_general_ci,COERCIBLE) for operation '='[/code] Вываливается на вот этом коде: Код (Text): // 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'); }
sword dancer Так база на utf8 и есть А что нельзя без ошибок обойтись, хоть даже и клиент передает не то. На других трекерах такого не замечается ведь.
исправь на PHP: <? $sql = 'SELECT * FROM '. BT_TRACKER_TABLE ." WHERE torrent_id = $torrent_id AND peer_id = '".mysql_escape_string($peer_id_sql)."' LIMIT 1"; ?> и не будет тебе ошибок.
а-а-а. ступил. так конфликт кодировок. скорей всего база или таблица в UTF, а поле с CP1251 покажи как у тебя? Код (Text): mysql> show create table phpbb_bt_tracker\G; *************************** 1. row *************************** Table: phpbb_bt_tracker Create Table: CREATE TABLE `phpbb_bt_tracker` ( `torrent_id` mediumint(8) unsigned NOT NULL default '0', `peer_id` char(20) character set utf8 collate utf8_bin NOT NULL default '', `user_id` mediumint(9) NOT NULL default '0', `ip` char(8) character set utf8 collate utf8_bin NOT NULL default '0', `port` smallint(5) unsigned NOT NULL default '0', `uploaded` bigint(20) unsigned NOT NULL default '0', `downloaded` bigint(20) unsigned NOT NULL default '0', `complete_percent` bigint(20) unsigned NOT NULL default '0', `seeder` tinyint(1) NOT NULL default '0', `last_stored_up` bigint(20) unsigned NOT NULL default '0', `last_stored_down` bigint(20) unsigned NOT NULL default '0', `stat_last_updated` int(11) NOT NULL default '0', `speed_up` mediumint(8) unsigned NOT NULL default '0', `speed_down` mediumint(8) unsigned NOT NULL default '0', `update_time` int(11) NOT NULL default '0', `expire_time` int(11) NOT NULL default '0', KEY `torrent_id` (`torrent_id`), KEY `user_id` (`user_id`) ) ENGINE=MEMORY DEFAULT CHARSET=utf8 1 row in set (0.00 sec)
440Hz Боюсь что не поможет, исходниках присутствует следующее: $peer_id - это как раз параметр, перед тем как он превратитс в $peer_id_sql с ним происходят следующие приключения $peer_id_sql = rtrim(sqlesc($peer_id), ' '); гдк sqlesc function sqlesc ($x) { return mysql_escape_string($x); }
ты покажи что у тебя выведет show create table phpbb_bt_tracker\G; зпрос, а там посмотрим. вот у меня все в UTF, никаких проблем нту.
Код (Text): CREATE TABLE `phpbb_bt_tracker` ( `torrent_id` mediumint(8) unsigned NOT NULL default '0', `peer_id` binary(20) NOT NULL, `user_id` mediumint(8) default NULL, `ip` varchar(8) NOT NULL default '0', `port` smallint(5) unsigned NOT NULL default '0', `uploaded` bigint(20) unsigned NOT NULL default '0', `downloaded` bigint(20) unsigned NOT NULL default '0', `complete_percent` bigint(20) unsigned NOT NULL default '0', `seeder` tinyint(1) NOT NULL default '0', `last_stored_up` bigint(20) unsigned NOT NULL default '0', `last_stored_down` bigint(20) unsigned NOT NULL default '0', `stat_last_updated` int(11) NOT NULL default '0', `speed_up` mediumint(8) unsigned NOT NULL default '0', `speed_down` mediumint(8) unsigned NOT NULL default '0', `update_time` int(11) NOT NULL default '0', `expire_time` int(11) NOT NULL default '0', KEY `torrent_id` (`torrent_id`), KEY `user_id` (`user_id`) ) ENGINE=MEMORY DEFAULT CHARSET=utf8
Я просто ставил зарубежную сборку на основе торентпира, уже сто раз пожалел, вначале было много проблем с русским языком и вот до сих пор не все решил, вот эта проблема болше всего бесит
так поставь нормльную? и когда в UTF, то похрен какой язык. а per_id все нормльно там. никакой абракадабры. абракадабра клиенту отдается от тебя. и потом к тебе позвращается.
Да она нормальная, просто на русский язык не расчитана. И легко сказать поставь У меня уже рабочий трекер, почти год в строю (в локальной сети провайдера) Поменять его не представляется возможным, уже столько модов прикручено, десятки тысяч сообщений и раздач и тд ну у меня записи в поле peer_id что-то проде "-BC0070-nг/<ђT|J"
ну так и пропиши полю utf8 binary ? какие проблемы-то? p.s. я свой трекер остановил. я его ставил что бы посмотреть как оно живет для опыта и общего развития.
поставил utf8 binary Теперь посмотрим что будет, баг неприятен тем, что проявляется не сразу, надо ждать.
дык база в ютф, а клиент в системкой кодировке, которая обычно 1251. переводи клиента на ютф и будет всё хорошо.
http://www.w3.org/TR/html4/struct/globa ... ction_PICS http://www.w3.org/TR/html4/interact/for ... pt-charset