MySQL エラー: これは sql_mode=only_full_group_by ソリューションと互換性がありません


プロジェクトのシナリオ:

提示:这里简述项目相关背景:

which is not functionally dependent on columns in GROUP BY clause; 
this is incompatible with sql_mode=only_full_group_by

画像の説明を追加してください
機能的には GROUP BY 句の列に依存しないため、GROUP BY 句とsqlmode=onlyfull_groupby互換性がありません。


原因分析と解決策:

ヒント: 問題の分析と問題の具体的な解決策をここに入力します。

この問題は、MySQL の SQL モード設定、特にONLY_FULL_GROUP_BYモードに関連しています。
このパターンでは、 を使用する場合GROUP BY、の列が句内SELECTに存在するか、集計関数に含まれている必要があります。GROUP BY

したがって、現在の MySQL サーバーの設定を知る必要がありますsql_mode

SELECT @@global.sql_mode;

返された結果にそれが見られる場合ONLY_FULL_GROUP_BY、それが問題です。

私の戻り結果:ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
ここに画像の説明を挿入します
この問題を永久に解決するには、MySQL サーバーの構成ファイルを変更して削除する必要がありますONLY_FULL_GROUP_BYこの設定ファイルの場所はオペレーティング システムと MySQL のバージョンによって異なりますが、通常はmy.ini設定ファイル内にあります。

さまざまな設定が含まれている というセクションを見つけます[mysqld]sql_mode設定を見つけてそこから削除する必要がありますONLY_FULL_GROUP_BY

上記の結果に基づいて、sql_mode設定は次のように設定されるはずです。

[mysqld]  
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'

ここに画像の説明を挿入します

構成ファイルを保存して閉じた後、変更を有効にするためにMySQL サーバーを再起動する必要があります。ほとんどのシステムでは、タスク マネージャーで mysql を見つけてサービスを開きます。
ここに画像の説明を挿入します

最後に、Navicat を再度開いてエラーが報告されているかどうかを確認し、SELECT @@global.sql_mode;時間を確認するために再実行します。
ここに画像の説明を挿入します


要約:

ヒント: 問題の解決プロセスの概要をここに入力します。

現在の MySQL サーバーsql_mode設定をクエリします。

SELECT @@global.sql_mode;

返された結果を削除しONLY_FULL_GROUP_BY,STRICT以下のみを保持します。sql_mode='STRICT_XXXXX'

次に、mysql サーバーを再起動し、Navicat を開いてsql_modeコードを再実行して現在の MySQL サーバー設定をクエリし、返された結果にまだ GROUP_BY が含まれているかどうかを確認します。含まれていない場合は、正しいです。

おすすめ

転載: blog.csdn.net/rej177/article/details/132976079