Server Error: (1241)

Тема в разделе "HLstatsX:CE", создана пользователем R2D2, 1 окт 2012.

  1. R2D2

    R2D2

    Сообщения:
    23
    Симпатии:
    9
    Собстнно:

    Код:
    Database Error
    
    Server Address: localhost
    Server Username: root
    
    Error Diagnostic:
     Bad query.
    
    Server Error: (1241) Operand should contain 1 column(s)
    
    Last SQL Query:
    		SELECT
    			COUNT(*)
    		FROM
    			hlstats_Players
    		WHERE
    			game='cstrike'
    			AND hideranking = 0
    			AND kills >= 1
    			AND (
    					(skill > '1055') OR (
    						(skill = '1055') AND (kills/IF(deaths=0,1,deaths) > 0,64285714285714)
    					)
    			)
    	
    
    Этот лог выдаёт hlstatsx последней да и старших версий, в разделе /hlstats.php?mode=playerinfo&player={num}
    после поля Очки: или Points: , покопав код и гугл пришёл к выводу что мой mysql не может работать с запросами такого вида, где числа (kills/deaths=0,64285714285714) как видно с запятой.
    Недавно был переход на новое ядро и смена apache2 на nginx, соот. mysql и nginx + php5-fpm тоже обновились, и на старой mysql такого небыло.

    Если округлить поля kills и deaths на выходе получим целое число с которым запрос прекрасно выполняется без всяких там Operand should contain 1 column(s).

    Нашёл я этот файл \web\includes\functions.php
    Код:
    (".$g_options['rankingtype']." = '".$playerdata[$g_options['rankingtype']]."') AND (kills/IF(deaths=0,1,deaths) > ".($playerdata['kills']/$tempdeaths).")
    
    добавив всего round 
    
    (".$g_options['rankingtype']." = '".$playerdata[$g_options['rankingtype']]."') AND (kills/IF(deaths=0,1,deaths) > ".round($playerdata['kills']/$tempdeaths).")
    
    конечно всё стало работать.

    Ребят мож кто сталкивался с такой проблемой?
    Мож конфиг где не тот у демонов для работы с числами?

    nginx 1.1.19-1
    php5-fpm 5.3.10-1
    mysql-server 5.5.24

    Прув: http://cs.rainbows.org.ua/hlstats.php?mode=playerinfo&player=25212
     
  2. tiger_by

    tiger_by Гл. Админ SourceGames.RU

    Сообщения:
    629
    Симпатии:
    279
    Попробуй repair table hlstats_Players

    А потом запусти демон run_hlstats
     
  3. R2D2

    R2D2

    Сообщения:
    23
    Симпатии:
    9

    Заделал:
    Код:
    Table                    Op      Msg_type  Msg_text
    -----------------------  ------  --------  --------
    hlstats.hlstats_Players  repair  status    OK  
    
    Table                    Op      Msg_type  Msg_text
    -----------------------  ------  --------  --------
    hlstats.hlstats_Players  check   status    OK   
    
    Table                    Op       Msg_type  Msg_text                   
    -----------------------  -------  --------  ---------------------------
    hlstats.hlstats_Players  analyze  status    Table is already up to date
    
    убрал round получил тож самы лог :(

    tiger_by, а при краше таблицы разве не этот лог? http://hlmod.ru/forum/showpost.php?p=68380&postcount=1

    Да и при round е он при краше бы написал что таблице хана наверно.
     
  4. tiger_by

    tiger_by Гл. Админ SourceGames.RU

    Сообщения:
    629
    Симпатии:
    279
    • Неверное число столбцов в подзапросе:
      ERROR 1241 (ER_OPERAND_COLUMNF)
      SQLSTATE = 21000
      Message = "Operand should contain 1 column(s)"
      Эта ошибка возникает в случаях наподобие следующего:
      SELECT (SELECT columnl, column2 FROM t2) FROM tl;
      Допустимо применять подзапросы, которые возвращают несколько столбцов с целью сравнения. См. раздел 6.1.8.7. Но в других контекстах подзапрос должен быть скалярным операндом.
    google
     
    Последнее редактирование: 1 окт 2012
  5. R2D2

    R2D2

    Сообщения:
    23
    Симпатии:
    9
    Ужас =\ Главное я исходный то не менял, посмотрев гугл увидел куча таких серверов с такими же логами :)