[1.0.24J開発版]既存リソースの編集時にエラー

質問全般・改善要望
mune3001
メンバー
メンバー
記事: 61
登録日時: 2010年5月08日(土) 16:58

[1.0.24J開発版]既存リソースの編集時にエラー

投稿記事by mune3001 » 2020年11月14日(土) 22:06

MODXバージョン 1.0.24J(開発版2020年11月14日ダウンロード)
PHPのバージョン 7.3.14
データベースのバージョン 5.7.29-log

お世話になっております。

開発版にアップデートしたところ下記エラーにより既存リソースの編集ができなくなりました。
グループ機能を使用した場合にエラーになりそうです。

≪ MODX Parse Error ≫
MODX encountered the following error while attempting to parse the requested resource:
≪ Execution of a query to the database failed - In aggregated query without GROUP BY, expression #1 of SELECT list contains nonaggregated column '*******_db.modx_site_content.id'; this is incompatible with sql_mode=only_full_group_by ≫
SELECT id, count(id) as count FROM `*******_db`.`modx_site_content` WHERE parent in (1,2,3,4,123,124,125,184,221,222,223,224,225,270,276,277,299,522,679,712,911,984,995,1107,1324,1394,1444,1499,1868,2256,2258,2264)

ご確認のほどよろしくお願いいたします。
mod_kks
メンバー
メンバー
記事: 30
登録日時: 2017年11月04日(土) 01:31

[1.0.24J開発版]既存リソースの編集時にエラー

投稿記事by mod_kks » 2020年11月28日(土) 00:25

さくらの共用だったかと思いますが、MySQLが5.7系になった時デフォルト
設定になったonly_full_group_byモードが影響して同じようなエラーが発生
していたのを見たことがあります。

Evolution CMSの方でも以前strictモード対応云々のissuesのやりとりが色々
あったように思いますが、クエリの見直しはそこそこ時間がかかると思います
ので、苦肉の策として当面のところはmy.cnfでonly_full_group_byモードを
外して運用するのが良いかもしれません。
tktools
メンバー
メンバー
記事: 9
登録日時: 2020年8月17日(月) 09:13

[1.0.24J開発版]既存リソースの編集時にエラー

投稿記事by tktools » 2020年12月07日(月) 09:18

木下です。

確かに掲載されているエラーメッセージにそのように記述されていますね。
>>this is incompatible with sql_mode=only_full_group_by

MySQL5.7になったときに標準SQLに規定されていない機能をエラーにするように変更されたのが原因の様ですが…
https://gihyo.jp/dev/serial/01/mysql-ro ... -news/0018

将来的にはクエリーの見直しが必要になっても、これまで動作していたものが動かなくなるのは問題なので対処するにしても
MODXの問題というよりは、サーバー環境の問題なので my.cnf で対応するのもいいと思います。
https://qiita.com/masayuki14/items/3aa199035eb4fdcfa446

MODX内部で対応するのであればMySQL独自の問題なので
manager/includes/extenders/dbapi/mysqli.inc.php
の function connect()の中で接続完了後(例えば129行目とか)に

 $this->set('sql_mode','NO_ENGINE_SUBSTITUTION');

とかが良いかもしれません。
MySQLのVerを判断して送信するとか、サーバー固有の設定を行う適切な場所が何処かにあれば
それもいいとおもうのですがどうでしょう。