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. カウンターの実装2. 成果を達成する1. カウンターの実装ページにカウンターを実装するだけ...
目次1. ブリッジを設定し、検証のためにパケットをキャプチャする1. ブリッジデバイスとセッションを...
MySQLとMariaDBの関係MariaDB データベース管理システムは MySQL のブランチで...
GitHub にはあらゆる種類の魔法のツールがあります。今日、私はデータベースを操作するためのコマン...
UCenter Homeは、ComsenzがリリースしたSNSサイト構築システムです。最新バージョン...
目次1.ダウンロード後、インストールしたいディレクトリに解凍します。 2. インストールディレクトリ...
コンテナ内でコマンドを実行したいが、コンテナに入りたくない場合があります。ではどうすればいいでしょう...
1. 概要Docker のイメージはレイヤーで設計されています。各レイヤーは「レイヤー」と呼ばれます...
1) 適用範囲:読み取り専用:input[type="text"],input[...
開発およびデバッグのプロセスでは、新しいコードと古いコードの違いを比較する必要があります。比較には、...
Tomcat は、Java Community Process を通じて Sun が開発した、広く使...
1. Apache Benchの紹介ApacheBench は、Apache サーバーに付属する W...
効果コード内の画像は自分で変更できますドロップダウンメニューのHTMLコード <ヘッダークラ...
導入保存時と読み取り時に CHAR 型と VARCHAR 型の違いを本当にご存知ですか?まずいくつか...
注意を払う必要があります。HTML Police がコードを調べて、意味のないタグをすべて見つけ出す...