記事ディレクトリ
プロジェクトのシナリオ:
提示:这里简述项目相关背景:
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 が含まれているかどうかを確認します。含まれていない場合は、正しいです。