MySQL 5.7.x の最新バージョンをダウンロードしてインストールしました。デフォルトでは、only_full_group_by モードが有効になっています。ただし、このモードを有効にした後、元の group by ステートメントでエラーが発生したため、削除しました。 only_full_group_by をオンにすると、group by は、影響を受けるフィールド情報しか取得できず、影響を受けない他のフィールドとは共存できない、distinct と同じになるように感じます。このように、group by の機能は非常に狭くなります。 only_full_group_by モードを有効にすることをお勧めします。 MySQL には、any_value(field) という関数があるため、グループ化されていないフィールドを表示できます (only_full_group_by モードをオフにするのと同じ効果があります)。 具体的なエラーメッセージ:
1.1. 1. sql_modeを確認する
1.2. 照会された値は次のとおりです。 ONLY_FULL_GROUP_BY、STRICT_TRANS_TABLES、NO_ZERO_IN_DATE、NO_ZERO_DATE、ERROR_FOR_DIVISION_BY_ZERO、NO_AUTO_CREATE_USER、NO_ENGINE_SUBSTITUTION 2. ONLY_FULL_GROUP_BY を削除し、値をリセットします。
2.1. 3. 上記はグローバル sql_mode を変更し、新しく作成されたデータベースに有効です。既存のデータベースの場合は、対応するデータの下で次のコマンドを実行する必要があります。
一般的な解決策は 2 つあります。 1: SQL クエリ ステートメントで group by を必要としないフィールドに対して any_value() 関数を使用することは、すでに多くの関数を開発しているプロジェクトには適していません。結局、元の SQL を変更する必要があります。 3.1. 2: my.cnf (Windows では my.ini) 構成ファイルを変更し、only_full_group_by 項目を削除します。プロジェクトの MySQL が Ubuntu にインストールされている場合は、このファイルを見つけて開きます。sql_mode 構成項目は含まれていないため、削除したくても削除できません。 もちろん、他の方法もあります。MySQLコマンドラインを開いて、コマンドを実行します。 @@sql_mode を選択します。 sql_mode=STRICT_TRANS_TABLES、NO_AUTO_CREATE_USER、NO_ENGINE_SUBSTITUTION; 注: コマンドを使用する sql_mode=STRICT_TRANS_TABLES、NO_AUTO_CREATE_USER、NO_ENGINE_SUBSTITUTION を設定します。 これにより、他のセッションに反映されることなく、1 つのセッションで構成項目を変更できます。 上記が十分に明確でない場合は、次の文を参照してください。 mysqlコマンドラインを入力し、次の2つの文を実行します。 グローバル sql_mode を 'STRICT_TRANS_TABLES、NO_ZERO_IN_DATE、NO_ZERO_DATE、ERROR_FOR_DIVISION_BY_ZERO、NO_AUTO_CREATE_USER、NO_ENGINE_SUBSTITUTION' に設定します。 セッション 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を再起動すると問題が再発します my.cnf を見つけて編集し、次のコマンドを適切な場所に配置して、mysql サービスを再起動すると、エラーは報告されません。
sql_model ステートメントは [mysqld] コンテンツ領域に配置する必要があることに注意してください。 mysql5.7 が group by をサポートしていない問題の解決策 1. sql_modeを確認する @@global.sql_mode を選択 照会された値は次のとおりです。 ONLY_FULL_GROUP_BY、STRICT_TRANS_TABLES、NO_ZERO_IN_DATE、NO_ZERO_DATE、ERROR_FOR_DIVISION_BY_ZERO、NO_AUTO_CREATE_USER、NO_ENGINE_SUBSTITUTION 2. ONLY_FULL_GROUP_BY を削除し、値をリセットします。 @@global.sql_mode を 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' に設定します。 Linux の mysql5.7+ は group by と order by を使用し、設定ファイルを変更せずに ONLY_FULL_GROUP_BY エラーを報告します。 1. mysqlと入力する
先頭にONLY_FULL_GROUP_BYがあることがわかりました 3. コマンドラインに入力する 4. mysql を終了し、再度入力して sql_mode を確認します。 基本的にはそれだけです。 |
<<: あなたをエキスパートに見せるための 13 個の JavaScript ワンライナー
>>: Linux CentOS 7.7 システムの VMware インストールに関する詳細なチュートリアル
システム環境: centos7.4 1. データベースがインストールされているかどうかを確認します。...
ピクセル解決通常、モニター解像度と呼ばれるものは、実際にはモニターの物理的な解像度ではなく、デスクト...
データベース管理システムにおける同時実行制御のタスクは、データベース内の同じデータに同時にアクセスす...
この記事では、例を使用して、MySQL データベースのデータ テーブルの最適化、外部キーの使用、およ...
この記事では、従業員管理登録ページを実装するためのjQueryの具体的なコードを例として紹介します。...
この記事を書いた理由は、修正した分散 PyTorch プログラムを Facebook のクラスター上...
インデックスを追加すると、クエリの効率が向上します。インデックスを追加するということは、ドキュメント...
元のアドレス: https://blog.csdn.net/m0_46579864/article/...
前回は、Explain 実行プランの表示、インデックスの分析など、MySQL での SQL クエリの...
社内の同僚は Nginx ログの標準出力、つまりコンソール経由の処理を必要としているため、まずログを...
1. コマンドの紹介watch コマンドは、指定されたコマンドを定期的に実行し、実行結果を全画面に表...
シナリオ最大 10000 要素のリストを正しくレンダリングする方法。無限ドロップダウン読み込みテクノ...
1 はじめにRedis 、 ANSI C言語で開発されたKey-Valueベースの高性能NoSQLデ...
弊社の Web プロジェクトの 1 つでは、新しい都市の増加によりトラフィックと DB 負荷が増加し...
序文皆さんは Linux で top コマンドを使ったことがあると思います。私は Linux に触れ...