Server Error: (1241)

R2D2

Участник
Сообщения
23
Реакции
9
Собстнно:

C-подобный:
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
C-подобный:
(".$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
 

tiger_by

Гл. Админ SourceGames.RU
Сообщения
631
Реакции
278
Попробуй repair table hlstats_Players

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

R2D2

Участник
Сообщения
23
Реакции
9
Попробуй repair table hlstats_Players

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


Заделал:
C-подобный:
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 е он при краше бы написал что таблице хана наверно.
 

tiger_by

Гл. Админ SourceGames.RU
Сообщения
631
Реакции
278
  • Неверное число столбцов в подзапросе:
    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
https://www.google.ru/#q=Server+Err...pw.r_qf.&fp=4264de5f97fa16b9&biw=1221&bih=832
 
Последнее редактирование:

R2D2

Участник
Сообщения
23
Реакции
9
  • Неверное число столбцов в подзапросе:
    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
https://www.google.ru/#q=Server+Err...pw.r_qf.&fp=4264de5f97fa16b9&biw=1221&bih=832

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