9:49 25.04.2018
После переезда с хостинга на VDS, на сайте вылезло масса ошибок, многие из них я уже исправил, уверен о многих, я еще не знаю, но, как только узнаю, сразу приступлю исправлять.
Вчера в админ панели получил такую ошибку:
Грешит на этот запрос:
Ошибка появляется из за того, что в запросе есть
В сети полно инструкций, как можно выкрутится при такой ошибке, для этого потребуется зайти в phpMyAdmin с правами root и удалить ONLY_FULL_GROUP_BY. "ONLY_FULL_GROUP_BY" - генерирует ошибку в запросах, в которых GROUP BY имеет не полный список не агрегированных параметров из SELECT и HAVING. Но, дело в том, что я не хочу удалять этот параметр, я хочу понять, где именно ошибка и справить ее непосредственно в запросе.
Я добавил в запрос:
И ошибка пропадает! Я просто добавил поля, что были названы в ошибке (без nameTable.):
После добавления одного поля, появляется другое, которое надо группировать, затем следующее и так далее. Как все необходимые поля будут сгруппированы, ошибки не будет.
Вчера в админ панели получил такую ошибку:
SELECT list is not in GROUP BY clause and contains nonaggregated column 'nameTable.setting_group.product_id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
Грешит на этот запрос:
$this->database()
->select('s.group_id, COUNT(s.group_id) AS total_settings, ')
->leftJoin(Phpfox::getT('setting'), 's', 's.group_id = setting_group.group_id AND s.is_hidden = 0')
->join(Phpfox::getT('module'), 'm', 'm.module_id = s.module_id AND m.is_active = 1');
$aRows = $this->database()
->select('setting_group.group_id, setting_group.product_id, setting_group.var_name, product.title AS product_name, language_phrase.text AS language_var_name')
->from($this->_sTable, 'setting_group')
->leftJoin(Phpfox::getT('product'), 'product', 'product.product_id = setting_group.product_id')
->leftJoin(Phpfox::getT('language_phrase'), 'language_phrase', array(
"language_phrase.language_id = '" . $langId . "'",
"AND language_phrase.var_name = setting_group.var_name"
)
)
->execute('getSlaveRows');
Ошибка появляется из за того, что в запросе есть
COUNT
и нет GROUP BY
.В сети полно инструкций, как можно выкрутится при такой ошибке, для этого потребуется зайти в phpMyAdmin с правами root и удалить ONLY_FULL_GROUP_BY. "ONLY_FULL_GROUP_BY" - генерирует ошибку в запросах, в которых GROUP BY имеет не полный список не агрегированных параметров из SELECT и HAVING. Но, дело в том, что я не хочу удалять этот параметр, я хочу понять, где именно ошибка и справить ее непосредственно в запросе.
Я добавил в запрос:
->group('setting_group.group_id, setting_group.product_id, setting_group.var_name, product.title, language_phrase.text')
И ошибка пропадает! Я просто добавил поля, что были названы в ошибке (без nameTable.):
... clause and contains nonaggregated column 'nameTable.setting_group.product_id' which is ...
После добавления одного поля, появляется другое, которое надо группировать, затем следующее и так далее. Как все необходимые поля будут сгруппированы, ошибки не будет.
- Жалоба