Главная страница \ Статьи \ Метод проб и ошибок \ Скрипты \ Проблема с дополнительными полями ModX

Проблема с дополнительными полями ModX

Установил для одного из заказных проектов ModX для теста. Вроде бы всё делаю правильно, но при нажатии на "Сохранить" данные дополнительных полей (всех типов) не сохраняются. А в журналах вылезает подобная ошибка:

[2016-09-26 19:08:50] (ERROR @ Z:\home\modxtest.ru\www\core\xpdo\om\xpdoobject.class.php : 240)
Error HY000 executing statement: 
Array
(
    [0] => HY000
    [1] => 3065
    [2] => Expression #1 of ORDER BY clause is not in SELECT list,
references column 'modxtest.tvtpl.rank' which is not in SELECT list;
this is incompatible with DISTINCT
)

Оказалось, что проблема кроется в несовместимости ModX и свежего MySQL (5.7), если конкретнее, то в установленном по-умолчанию режиме sql_mode ONLY_FULL_GROUP_BY. Есть временное решение проблемы. Необходимо выполнить следующий запрос из под суперпользователя:

SET GLOBAL
sql_mode=(SELECT REPLACE(@@GLOBAL.sql_mode, 'ONLY_FULL_GROUP_BY', ''));

В версии 2.5.2 вроде бы пофиксили.

Вопросы? Предложения?

pocoz [24.04.2017]
Упоротый у вас редактор. Он косячит с командами!!!!!!!
Вот на гисте сделал:
https://gist.github.com/pocoZ/44c614b5e181b414d0fbf72d4008d90f
pocoz [24.04.2017]
Я столкнулся первый раз с этой проблемой как только поставил 16 ubuntu, где-то год назад. MODX тут не при чем.
На самом деле все из-за включенного по умолчанию strict mode в mysql 5.7
Выключить его можно вот так:
пишем в терминале:
sudo nano /etc/mysql/my.cnf
и в самом конце файла дописываем пару строк
[mysqld]
sql_mode="NO_ENGINE_SUBSTITUTION"
сохраняем файл и перезапускаем mysql
sudo systemctl restart mysql
вот теперь все будет работать
Powered by Elise