Проблема с дополнительными полями 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
Вот на гисте сделал:
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
вот теперь все будет работать
На самом деле все из-за включенного по умолчанию strict mode в mysql 5.7
Выключить его можно вот так:
пишем в терминале:
sudo nano /etc/mysql/my.cnf
и в самом конце файла дописываем пару строк
[mysqld]
sql_mode="NO_ENGINE_SUBSTITUTION"
сохраняем файл и перезапускаем mysql
sudo systemctl restart mysql
вот теперь все будет работать