SQL ERROR [ mysqli ] ('phpbb.u.username_clean' isn't in GROUP BY [1055])

Список разделов phpBBex 2.x (заброшен) Поддержка 2.x

Описание: У вас проблемы с phpBBex 2.x и вам необходима помощь? Спрашивайте здесь!
Правила раздела: Одна тема — один вопрос или группа связанных вопросов. Обязательно формируйте внятный заголовок, максимально отражающий суть вопроса. Подробно описывайте проблему. Не забудьте указать версию phpBBex и какие моды установлены, по возможности добавьте скриншоты проблемы или ссылку на страницу с проблемой.
Модератор: Поддержка

Сообщение #1 sins_collector » 03.03.2016, 11:42

Добрый день!
После свежей установки на главной получаю следующее:

Код: Выделить всё
SQL ERROR [ mysqli ]

'phpbb.u.username_clean' isn't in GROUP BY [1055]

SQL

SELECT s.session_user_id AS user_id, s.session_viewonline, u.username, u.user_type, u.user_colour FROM phpbb_sessions s LEFT JOIN phpbb_users u ON s.session_user_id = u.user_id WHERE s.session_time >= 1456993950 AND u.user_type <> 2 AND s.session_user_id <> 1 GROUP BY s.session_user_id ORDER BY u.username_clean

BACKTRACE

FILE: (not given by php)
LINE: (not given by php)
CALL: msg_handler()

FILE: [ROOT]/phpbb/db/driver/driver.php
LINE: 855
CALL: trigger_error()

FILE: [ROOT]/phpbb/db/driver/mysqli.php
LINE: 193
CALL: phpbb\db\driver\driver->sql_error()

FILE: [ROOT]/phpbb/db/driver/factory.php
LINE: 329
CALL: phpbb\db\driver\mysqli->sql_query()

FILE: [ROOT]/includes/functions.php
LINE: 4254
CALL: phpbb\db\driver\factory->sql_query()

FILE: [ROOT]/includes/functions.php
LINE: 5000
CALL: obtain_users_online()

FILE: [ROOT]/index.php
LINE: 263
CALL: page_header()

Но /adm и /stk работают без ошибок.

Куда копнуть?
sins_collector M
Автор темы
Аватара
Репутация: 1
С нами: 8 лет

Сообщение #2 Sumanai » 03.03.2016, 19:36

Версия базы данных и PHP?
Sumanai M
Аватара
Репутация: 1677
С нами: 11 лет 1 месяц

Сообщение #3 sins_collector » 03.03.2016, 20:59

PHP 5.5.9
MySQL 5.6.28-76.1 (Percona)

Upd:
Обновил PHP до 5.6.18, ситуация не изменилась.
sins_collector M
Автор темы
Аватара
Репутация: 1
С нами: 8 лет

Сообщение #4 Sumanai » 03.03.2016, 21:16

Странно. По идее персона совместима с MySQL. Но я на ней не тестировал.
Попробуйте открыть файл /includes/functions.php, найти строку
Код: Выделить всё
      GROUP BY s.session_user_id
И заменить на
Код: Выделить всё
      GROUP BY s.session_user_id, u.username_clean
Sumanai M
Аватара
Репутация: 1677
С нами: 11 лет 1 месяц

Сообщение #5 sins_collector » 03.03.2016, 21:20

phpBB работал..

Теперь получаю:
Код: Выделить всё
'phpbb.s.session_viewonline' isn't in GROUP BY [1055]
sins_collector M
Автор темы
Аватара
Репутация: 1
С нами: 8 лет

Сообщение #6 Sumanai » 03.03.2016, 21:30

sins_collector:phpBB работал..
phpBBex не тестировался на этой БД, вот и недочёты.
sins_collector:Теперь получаю:
Запрос тот же?
Sumanai M
Аватара
Репутация: 1677
С нами: 11 лет 1 месяц

Сообщение #7 sins_collector » 03.03.2016, 21:37

Sumanai:phpBBex не тестировался на этой БД, вот и недочёты.
Я прям уверен, что дело не в перконе. Они же полностью совместимы.

Sumanai:Запрос тот же?
Неа, по совету изменил на GROUP BY s.session_user_id, u.username_clean
sins_collector M
Автор темы
Аватара
Репутация: 1
С нами: 8 лет

Сообщение #8 Sumanai » 03.03.2016, 22:01

sins_collector:Они же полностью совместимы.
Вот именно. У меня же работает на MariaDB.
sins_collector:Неа, по совету изменил на GROUP BY s.session_user_id, u.username_clean
То есть тот же, но изменённый.
Sumanai M
Аватара
Репутация: 1677
С нами: 11 лет 1 месяц

Сообщение #9 sins_collector » 03.03.2016, 22:02

Sumanai:То есть тот же, но изменённый.
Открывал по-прежнему главную страницу, если в этом вопрос.
sins_collector M
Автор темы
Аватара
Репутация: 1
С нами: 8 лет

Сообщение #10 Sumanai » 03.03.2016, 22:08

Можете подключиться к БД, выполнить запросы и показать результат:
Код: Выделить всё
SELECT @@GLOBAL.sql_mode;
SELECT @@SESSION.sql_mode;
Sumanai M
Аватара
Репутация: 1677
С нами: 11 лет 1 месяц

Сообщение #11 sins_collector » 03.03.2016, 22:11

Sumanai:SELECT @@GLOBAL.sql_mode;
Код: Выделить всё
ONLY_FULL_GROUP_BY,NO_AUTO_VALUE_ON_ZERO,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

Sumanai:SELECT @@SESSION.sql_mode;
Код: Выделить всё
ONLY_FULL_GROUP_BY,NO_AUTO_VALUE_ON_ZERO,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION


ONLY_FULL_GROUP_BY?
sins_collector M
Автор темы
Аватара
Репутация: 1
С нами: 8 лет

Сообщение #12 Sumanai » 03.03.2016, 22:17

Да, похоже оно. У меня вот вообще:
Код: Выделить всё
NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
В общем пойду экспериментировать. Давно хотел сделать скрипты совместимыми с ANSI SQL, но лень было ставить другие БД для теста. А эта настройка как раз делает несовместимый с ANSI SQL БД MySQL чуть более совместимой.

Добавлено спустя 2 минуты 49 секунд:
Sumanai:Да, похоже оно.
Точно оно. Воспроизвёл у себя.
Sumanai M
Аватара
Репутация: 1677
С нами: 11 лет 1 месяц

Сообщение #13 sins_collector » 03.03.2016, 22:27

Скажите, пожалуйста, чем чревато отключение?
Это просто более строгая "проверка" запросов?

Нашел: http://mysqlserverteam.com/when-only_full_group_b ... ee-the-query-is-deterministic/

Правильно ли я понимаю, что работу остальных приложений с этой БД отключение не нарушит?

Upd:
Отключил, зажмурившись :cyclop:
Все работает, спасибо!
Заодно выяснил, что NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO deprecated.
sins_collector M
Автор темы
Аватара
Репутация: 1
С нами: 8 лет

Сообщение #14 Sumanai » 03.03.2016, 22:50

sins_collector:Это просто более строгая "проверка" запросов?
Это соответствие стандартам. Стандарты эти, местами, маразматичные, как по мне.
Впрочем, если найду решение, то в следующей версии phpBBex будет совместим с этим. Это требует некоторые другие БД, типа PostgreSQL.
Sumanai M
Аватара
Репутация: 1677
С нами: 11 лет 1 месяц


Вернуться в Поддержка 2.x