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 インストールに関する詳細なチュートリアル
JDBCデータベースリンクと関連メソッドのカプセル化の詳細な説明MySQL データベースを使用して、...
1. MySQLインストールパッケージをダウンロードするまず、https://dev.mysql.c...
Dreamweaver8 を使用して独自の Web サイトを作成する目的は何ですか?インターネットに...
FOUC は Flash of Unstyled Content の略で、FOUC と略されます。簡...
目次序文SessionStorage と LocalStorage の紹介SessionStorag...
目次本質的な違いデータベースセキュリティ権限スキーマの移行パターンオブジェクトの類似性スキーマオブジ...
kubectl の紹介kubectl は、k8s クラスターを操作するためのコマンドライン ツールで...
MySQL 8.0 の新機能は次のとおりです。 Unicode 9.0 をすぐに完全にサポートウィン...
mysql-5.7.9 では、ついにシャットダウン構文が提供されます。以前は、MySQL データベー...
DB ベンチマーク テストを実行する場合、qps と tps はデータベースのパフォーマンスを測定す...
今日、プロジェクトのホームページにアクセスするために Tomcat を設定していたところ、404 エ...
VMware のインストールパッケージのインストールダウンロードアドレス: https://www....
スワップ メモリとは、主に物理メモリが不足している場合に、システムがハード ディスク領域の一部をサー...
ウェブサイトを作成するユーザーの多くが、このような問題に遭遇すると思います。Chrome のデフォル...
目次1. 理論シリアル化可能繰り返し読み取りコミットされた読み取りコミットされていない読み取り2. ...