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 インストールに関する詳細なチュートリアル
1. 背景1. フロントエンドはvue + vuex + socket.io-clientを使用しま...
簡単に言うと、ウェアハウスとして使用される仮想マシンの IP は 192.168.149.129 で...
1. 仮想マシンにLinuxシステムをインストールし、仮想マシンを起動し、rootとパスワードを入力...
tomcat の containerID を見つけて、tomacat ディレクトリに入ります。 [r...
この記事の例では、参考のためにjsカスタム右クリックメニューの具体的なコードを共有しています。具体的...
1. Expressライブラリとジェネレータをインストールするcmdを開いて、次のコマンドを入力しま...
目次1. 基本的な例2. インスタンスプロトタイプのスコープを設定する3. グローバル変数の登録と使...
説明と紹介Docker inspect は Docker クライアントのネイティブ コマンドであり、...
1. ノードを削除するkubectl delete node node01を実行します。 2. この...
1. ナビゲーション: 順序なしリストとその他のラベル要素ナビゲーションを記述するために最も一般的に...
目次react-nativeプロジェクトの初期化react-nativeプロジェクトをインストールす...
説明 ソリューションVMware 15 仮想マシン ブリッジ モードではインターネットにアクセスでき...
目次ミニプログラム開発者ツールのソースコードを表示する方法ミニプログラムアーキテクチャ設計1. ミニ...
目次1. 概要1. スカイウォーキング入門2. スカイウォーキング建築3. スカイウォーキングはどの...
Vuex は、Vue.js アプリケーション専用に開発された状態管理パターンです。集中型ストレージを...