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

Board index phpBBex 2.x Поддержка

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

Post #1by sins_collector » 03.03.2016, 11:42

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

Code: Select all
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
Topic author, Новичок
Avatar
Age: 29
Reputation: 1
With us: 3 yaers 7 months

Post #2by Sumanai » 03.03.2016, 19:36

Версия базы данных и PHP?
Использование поиска продлевает жизнь.
Это форум поддержки форка phpBBex. Поддержка по phpBB осуществляется в других местах.
Sumanai M
Гуру
Avatar
Reputation: 1666
With us: 6 years 8 months

Post #3by 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
Topic author, Новичок
Avatar
Age: 29
Reputation: 1
With us: 3 yaers 7 months

Post #4by Sumanai » 03.03.2016, 21:16

Странно. По идее персона совместима с MySQL. Но я на ней не тестировал.
Попробуйте открыть файл /includes/functions.php, найти строку
Code: Select all
      GROUP BY s.session_user_id
И заменить на
Code: Select all
      GROUP BY s.session_user_id, u.username_clean
Использование поиска продлевает жизнь.
Это форум поддержки форка phpBBex. Поддержка по phpBB осуществляется в других местах.
Sumanai M
Гуру
Avatar
Reputation: 1666
With us: 6 years 8 months

Post #5by sins_collector » 03.03.2016, 21:20

phpBB работал..

Теперь получаю:
Code: Select all
'phpbb.s.session_viewonline' isn't in GROUP BY [1055]
sins_collector M
Topic author, Новичок
Avatar
Age: 29
Reputation: 1
With us: 3 yaers 7 months

Post #6by Sumanai » 03.03.2016, 21:30

sins_collector wrote:phpBB работал..
phpBBex не тестировался на этой БД, вот и недочёты.
sins_collector wrote:Теперь получаю:
Запрос тот же?
Использование поиска продлевает жизнь.
Это форум поддержки форка phpBBex. Поддержка по phpBB осуществляется в других местах.
Sumanai M
Гуру
Avatar
Reputation: 1666
With us: 6 years 8 months

Post #7by sins_collector » 03.03.2016, 21:37

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

Sumanai wrote:Запрос тот же?
Неа, по совету изменил на GROUP BY s.session_user_id, u.username_clean
sins_collector M
Topic author, Новичок
Avatar
Age: 29
Reputation: 1
With us: 3 yaers 7 months

Post #8by Sumanai » 03.03.2016, 22:01

sins_collector wrote:Они же полностью совместимы.
Вот именно. У меня же работает на MariaDB.
sins_collector wrote:Неа, по совету изменил на GROUP BY s.session_user_id, u.username_clean
То есть тот же, но изменённый.
Использование поиска продлевает жизнь.
Это форум поддержки форка phpBBex. Поддержка по phpBB осуществляется в других местах.
Sumanai M
Гуру
Avatar
Reputation: 1666
With us: 6 years 8 months

Post #9by sins_collector » 03.03.2016, 22:02

Sumanai wrote:То есть тот же, но изменённый.
Открывал по-прежнему главную страницу, если в этом вопрос.
sins_collector M
Topic author, Новичок
Avatar
Age: 29
Reputation: 1
With us: 3 yaers 7 months

Post #10by Sumanai » 03.03.2016, 22:08

Можете подключиться к БД, выполнить запросы и показать результат:
Code: Select all
SELECT @@GLOBAL.sql_mode;
SELECT @@SESSION.sql_mode;
Использование поиска продлевает жизнь.
Это форум поддержки форка phpBBex. Поддержка по phpBB осуществляется в других местах.
Sumanai M
Гуру
Avatar
Reputation: 1666
With us: 6 years 8 months

Post #11by sins_collector » 03.03.2016, 22:11

Sumanai wrote:SELECT @@GLOBAL.sql_mode;
Code: Select all
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 wrote:SELECT @@SESSION.sql_mode;
Code: Select all
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
Topic author, Новичок
Avatar
Age: 29
Reputation: 1
With us: 3 yaers 7 months

Post #12by Sumanai » 03.03.2016, 22:17

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

Added after 2 minutes 49 seconds:
Sumanai wrote:Да, похоже оно.
Точно оно. Воспроизвёл у себя.
Использование поиска продлевает жизнь.
Это форум поддержки форка phpBBex. Поддержка по phpBB осуществляется в других местах.
Sumanai M
Гуру
Avatar
Reputation: 1666
With us: 6 years 8 months

Post #13by 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
Topic author, Новичок
Avatar
Age: 29
Reputation: 1
With us: 3 yaers 7 months

Post #14by Sumanai » 03.03.2016, 22:50

sins_collector wrote:Это просто более строгая "проверка" запросов?
Это соответствие стандартам. Стандарты эти, местами, маразматичные, как по мне.
Впрочем, если найду решение, то в следующей версии phpBBex будет совместим с этим. Это требует некоторые другие БД, типа PostgreSQL.
Использование поиска продлевает жизнь.
Это форум поддержки форка phpBBex. Поддержка по phpBB осуществляется в других местах.
Sumanai M
Гуру
Avatar
Reputation: 1666
With us: 6 years 8 months


Return to Поддержка