Nucleus(JP)フォーラム

NucleusCMS日本語版ユーザーのためのサポートフォーラムです。疑問が生じたらまずは記事検索をご利用ください。

ログインしていません。

#1 2019-09-22 13:37:01

tomi
メンバー
From: 神戸
登録日: 2010-12-14
投稿: 22
ウェブサイト

sql mode「ONLY_FULL_GROUP_BY」によるエラー

[解決 コメントに対策方法]
またMySQL関連のところで聞けと怒られそうですが、どうにもならんようなのでお尋ねします。MySQLが5.7.6へ更新されて以後、「ONLY_FULL_GROUP_BY」がデフォルト値となったせいらしいのですが、Nucleusを利用しているサイトの過去記事一覧などで、query SELECT itimeがあるためか、SQLモード設定の「ONLY_FULL_GROUP_BY」でエラーになりだしました。sql mode項目の「ONLY_FULL_GROUP_BY」外せば済む話なのですが、レンタルサーバーではmy.cnfとかmysqld.cnfといった、これを司るファイルの編集権限がありません。調べると、例えば
array("SET SESSION sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';")
とかでそのクエリーが出る都度にモードを変更させれば良いらしいのですが、どこに入れたものやら、皆目見当が付きません。アドバイスいただけましたら有り難いのですが…
エラーメッセージ例を、以下に。
mySQL error with query SELECT itime, SUBSTRING(itime,1,4) AS Year, SUBSTRING(itime,6,2) AS Month, SUBSTRING(itime,9,2) as Day FROM nucleus_item WHERE iblog=1 and itime <="2019-09-22 13:23:49" and idraft=0 and icat=9 GROUP BY Year, Month ORDER BY itime DESC: Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'xxxxxxx.nucleus_item.itime' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

編集者 tomi (2019-09-25 13:49:05)


--Tomi------------------------------------------
  tech@digi-hound.com
  DIGIHOUND LLC USA    President
---------------------------------------------------

オフライン

#2 2019-09-25 13:48:34

tomi
メンバー
From: 神戸
登録日: 2010-12-14
投稿: 22
ウェブサイト

Re: sql mode「ONLY_FULL_GROUP_BY」によるエラー

解決しました。お騒がせしました。
もし同じ症状でお困りの方がありましたら…ということで、以下に対策。

BLOG.php 614行目
        echo TEMPLATE::fill($tplt, $data);
の後に、
        sql_query("SET sql_mode=(SELECT REPLACE(@@sql_mode, 'ONLY_FULL_GROUP_BY', ''));");
を追加します。これだけです。


--Tomi------------------------------------------
  tech@digi-hound.com
  DIGIHOUND LLC USA    President
---------------------------------------------------

オフライン

#3 2019-10-09 10:21:32

yama
Administrator
登録日: 2005-07-07
投稿: 1,272
ウェブサイト

Re: sql mode「ONLY_FULL_GROUP_BY」によるエラー

こちら確認が遅くなりました。情報ありがとうございます。
クエリのほうを修正したいと思いますので、もしよければ動作確認をお願いしてよいでしょうか?
できればONLY_FULL_GROUP_BYをオンオフする設定も追加したいと思います。

オフライン

Board footer