MODX Parse Error в "Параметры (TV)"

Тема в разделе "MODx", создана пользователем spamhost, 25 окт 2018.

  1. spamhost

    spamhost

    Регистр.:
    29 апр 2009
    Сообщения:
    276
    Симпатии:
    145
    Достался сайт на MODx, необходимо внести некоторые правки, но на странице элементов в части "Параметры (TV)" имею такое сообщение:

    « MODX Parse Error »
    MODX encountered the following error while attempting to parse the requested resource:
    « Execution of a query to the database failed - Expression #1 of ORDER BY clause is not in SELECT list, references column 'mysite_modx.tvtpl.rank' which is not in SELECT list; this is incompatible with DISTINCT »
    SQL > SELECT DISTINCT tv.*, IF(tvc.value!='',tvc.value,tv.default_text) as value FROM `mysite_modx`.`modx_site_tmplvars` AS tv INNER JOIN `mysite_modx`.`modx_site_tmplvar_templates` AS tvtpl ON tvtpl.tmplvarid = tv.id LEFT JOIN `mysite_modx`.`modx_site_tmplvar_contentvalues` AS tvc ON tvc.tmplvarid=tv.id AND tvc.contentid='18' LEFT JOIN `mysite_modx`.`modx_site_tmplvar_access` AS tva ON tva.tmplvarid=tv.id WHERE tvtpl.templateid='6' AND (1='1' OR ISNULL(tva.documentgroup)) ORDER BY tvtpl.rank,tv.rank, tv.id

    Если вставить данный SQL-запрос без ошибочной части "ORDER BY tvtpl.rank,", то в phpmyadmin он отрабатывает корректно. Где убрать или откорректировать в MODx "tvtpl.rank", чтобы не выводился этот ошибочный запрос и работало корректно?
     
  2. spamhost

    spamhost

    Регистр.:
    29 апр 2009
    Сообщения:
    276
    Симпатии:
    145
    Часы в поисковиках и экспериментах привели к решению, что это из-за устаревшего кода MODx и несовместимости с MySQL 5.7 и в новых релизах эта проблема устранена https://github.com/evolution-cms/evolution/releases
    Проблема в том, что на сервере я ради одного устаревшего сайта не могу понижать версию MySQL до 5.5, но и обновить MODx EVO тоже нельзя из-за используемых модулей и шаблонов.
    Вопрос: можно ли заменить избирательно какие-то конкретные файлы MODx для решения этой проблемы?

    p.s. Проблема решается многими способами, напр.:
    /etc/mysql/my.cnf
    [mysqld]
    sql_mode="NO_ENGINE_SUBSTITUTION"
     
    Последнее редактирование: 26 окт 2018