MySQL クエリのパケットが大きすぎる問題と解決策

MySQL クエリのパケットが大きすぎる問題と解決策

問題の説明:

エラーメッセージ:

原因: com.mysql.jdbc.PacketTooBigException: クエリのパケットが大きすぎます (1354 > 1024)。この値はサーバー上で変更できます。
max_allowed_pa​​cket変数を設定することによって

MySQL は、構成ファイルに従って、サーバーが受け入れるデータ パケットのサイズを制限します。場合によっては、挿入、更新、またはクエリ中のデータ パケットのサイズが max_allowed_pa​​cket パラメータによって制限され、操作が失敗することがあります。

max_allowed_pa​​cket パラメータを表示します。

クライアントで実行:

'%max_allowed_pa​​cket%' のような変数を表示します。

結果は次のとおりです。

+--------------------+-------------+ 
| 変数名 | 値 | 
+--------------------+-------------------+ 
| 最大許容パケット | 1024 | 
+--------------------+-------------------+

変更方法:

1. 設定ファイルを変更するには、my.cnf (Windows の場合は my.ini) を編集し、[mysqld] セクションまたは mysql サーバー設定セクションで変更します。

max_allowed_packet = 20M

my.cnfが見つからない場合は、

mysql --help | grep my.cnf

my.cnf ファイルを見つけてください。

Linux では、ファイルは /etc/ にあります。

2. mysqlコマンドラインで変更する

グローバルmax_allowed_pa​​cketを2*1024*1024*10に設定します  
//ここでの値はバイト数です。20Mに変更した場合、変更を有効にするには再度クライアントにログインする必要があります。

注意: クライアントがコマンドを使用して変更を行った後、変更は一時的にのみ有効になります。MYSQL を再起動すると、元の値が復元されます。

Linux 上の MySQL で報告される「クエリのパケットが大きすぎます (1040 > 1024)」というエラーの解決方法

プロジェクトは以前は正常に実行されていましたが、ここ数日突然クエリ エラーが頻繁に表示されるようになりました。ログを確認すると、「クエリのパケットが大きすぎます (1040 > 1024)」というエラーが表示されていました。サーバー上で「max_allowed_pa​​cket」変数を設定することで、この値を変更できます。 Baiduで解決策を検索し、解決プロセスを記録しました。

1. 理由

クエリ データベースによって返されたデータ パケットが大きすぎて、既定値を超えています。
mysql にログインし、コンソールに次のコマンドを入力して、デフォルトの max_allowed_pa​​cket 値を照会します。値は 1024 のみです。

'%max_allowed_pa​​cket%' のような変数を表示します。

2. デフォルトの最大許容パケットサイズを変更する

2.1 方法1: コマンド方式

(1)MySQLコンソールで次のコマンドを入力してmax_allowed_pa​​cketを20Mに設定する

グローバルmax_allowed_pa​​cketを20*1024*1024に設定します。

(2)MySQLを終了し、MySQLサービスを再起動してからMySQLにログインし、max_allowed_pa​​cketが正常に変更されたかどうかを確認します。

'%max_allowed_pa​​cket%' のような変数を表示します。

2.2 方法2: 設定ファイルmy.cnfを変更する
(1)mysqlコンソールで次のコマンドを入力してmy.cnfを編集します。

sudo vi /etc/mysql/my.cnf

(2)以下の[mysqId]を追加する

最大許容パケット = 20M

2.2 編集モードを終了し、MySQLを再起動します。2.1 (2) の手順に従ってください。

3. 注記

設定後、max_allowed_pa​​cket を照会したところ、16777216 であることがわかりました。これは実際には 16*1024*1024 であり、予想された 20M ではありません。そこで再度確認したところ、Java が多くのメモリを占有しているためにサーバーのメモリ容量が不足している可能性があり、MySQL が自動的にパラメータをリセットしている可能性があることがわかりました。そのため、場合によっては、max_allowed_pa​​cket パラメータを変更した後、しばらくすると MySQL がパラメータをデフォルトの 1024 に自動的にリセットし、同じエラーが再度発生する可能性があります。

<<:  リクエスト IP の最後のセグメントに基づいてトラフィックを分割するように Nginx を構成する方法

>>:  Angular のパフォーマンス最適化: サードパーティ コンポーネントと遅延読み込みテクノロジー

推薦する

MySQL 8.0.12 解凍バージョンのインストールチュートリアル

この記事では、MySQL 8.0.12解凍版のインストールチュートリアルを参考までに紹介します。具体...

K8S クラスターを構築し、Hyper-V で Docker をインストールする方法

Win10 システムをインストールしていて、k8s クラスターを構築する場合、Win10 に付属する...

MySQL データベース テーブルのパーティション分割に関する考慮事項 [推奨]

テーブル パーティショニングは、データベース パーティショニングとは異なります。では、テーブル パー...

JS配列メソッドの詳細な説明

目次1. 元の配列が変更されます1. プッシュ(): 2.ポップ(): 3. シフト(): 4.un...

JavaScript の setTimeout() の使用法の概要

目次1. はじめに2. setIntervalとsetTimeoutの違い3.タイムアウトを設定する...

IDEA が docker を統合して springboot プロジェクトを展開するプロセス全体

目次1. IDEAはdockerプラグインをダウンロードします2. クラウドサーバーDocker 2...

MySQL の「特殊キーが長すぎます」の解決策

目次解決策1解決策2テーブルを作成するときに、興味深い問題に遭遇しました。「指定されたキーが長すぎま...

Vueコンポーネント通信のさまざまな方法の詳細な説明

目次1. 父から息子へ2. 息子から父へ3. 親子関係のないコンポーネントの値の転送4. ヴュークス...

Vueのインストール方法の紹介

目次1. グローバルに登録されたコンポーネント2. グローバルカスタム指示vue 、新しいプラグイン...

JavaScript の遅延読み込み属性パターンを理解する

従来、開発者はインスタンスで必要になる可能性のあるデータに対して JavaScript クラス内にプ...

最も完全な 50 の MySQL データベース クエリ演習

このデータベース クエリ ステートメントは、インターネット上の 50 個のデータベース クエリ練習問...

MySql でリモート接続を許可する方法

MySql でリモート接続を許可する方法この目標を達成するには、2つのことを行う必要がある。ユーザー...

pt-heartbeat を使用して MySQL レプリケーションの遅延を監視する方法の詳細な説明

pt-ハートビートデータベースがマスターとスレーブ間で複製される場合、複製ステータスとデータ遅延は非...

JavaScript でグレイウルフのポットビーティングゲームを実装

1. プロジェクト文書 2. ページレイアウトにHTMLとCSSを使用するHTML部分 <di...

Dockerを使用してDjango+MySQL8開発環境をデプロイする方法の詳細な説明

しばらく前にシステムを再インストールしましたが、バックアップを取っていなかったので、コンピューター上...