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 インストールに関する詳細なチュートリアル
背景位置が背景画像の表示に与える影響この2日間のプロジェクトでホームページの写真を入れ替えていたとこ...
Docker コンテナのネットワーク障害に対する 6 つの解決策注: 以下の方法は、コンテナ内のパブ...
トリガーの紹介トリガーは、テーブルに関連付けられた特別なストアド プロシージャであり、テーブル内のデ...
現在実装されているのは、基本的な使用方法、クリア可能なボックス、パスワードボックスです。参考リンク:...
入力ボックスには、コンテンツを入力するときに常に入力履歴が表示されます。これを無効にする現在の方法は...
MySQLデータベースの基本構文DDL操作データベース作成構文: create database デ...
HTML コードを書くとき、最初の行は DOCTYPE にする必要がありますが、DOCTYPE は通...
問題: MySQLテーブル内の自動増分IDのオーバーフローによりビジネスブロックが発生した背景: t...
目次1. データベースの制約1.1 はじめに1.2 制約の種類1.3 ヌルでない1.4 ユニーク1....
目次1. はじめに2. es5メソッド3. 非同期関数のシリアル実行4. 非同期関数の並列実行5. ...
1. 概要Docker イメージを作成するには、次の 3 つの方法があります。 Docker コミッ...
目次1. 基本原則2. 特定のコード要約する1. 基本原則まず、生放送エリアを10の部分に分割し(個...
Vue エコシステムには Vite と呼ばれる新しいビルド ツールがあり、Vue CLI よりも 1...
デフォルトでは、Flash は常にページのトップレベルに表示されます。つまり、ページに DHTML ...
序文Ahhang が Springboot プロジェクトを開発していたとき、フロントエンドから検証コ...