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 のパフォーマンス最適化: サードパーティ コンポーネントと遅延読み込みテクノロジー

推薦する

ElementUIはドロップダウンオプションと複数選択ボックスのサンプルコードを実装します

目次ドロップダウン複数選択ボックスアップグレード - すべてのオプションを追加改訂と改善を求める製品...

CentOS 7 でソースコードから Openssh をインストールする方法

環境: CentOS 7.1.1503 最小インストール依存パッケージをダウンロードします: yum...

ウェブページ上でデスクトップ exe プログラムを呼び出す簡単な方法

この記事では主に、Web ページ上でデスクトップ exe プログラムを呼び出す方法を紹介します。 W...

Mysql 中国語ソートルールの説明

MySQL を使用する際、フィールドをソートしたりクエリしたりすることがよくあります。通常は、中国語...

ハンドラー PageHandlerFactory-Integrated のモジュール リストに不正なモジュール ManagedPipelineHandler が含まれています

Web プロジェクトを開発する場合、IIS をインストールする必要があります。IIS がインストール...

IE6 で CSS スタイルの div または li の背景のタイリングと境界の破損を解決する方法

IE6 で CSS スタイルの div または li の背景のタイリングや境界の破壊を解決するには、...

MySQL 8.0.11 MSI バージョンのインストールと構成のグラフィック チュートリアル

この記事では、MySQL 8.0.11 MSIバージョンのインストールと設定のチュートリアルを参考ま...

JavaScript 配列と非配列オブジェクトのディープ クローンとシャロー クローンの原則の詳細な説明

目次シャロークローニングとディープクローニングとは何ですか? 1. アレイのクローンを作成する1.1...

Vue+echarts でプログレスバーのヒストグラムを実現

この記事では、プログレスバーヒストグラムを実現するためのvue+echartsの具体的なコードを参考...

Ubuntu で .sh ファイルを実行するいくつかの方法の違いについて簡単に説明します。

序文特に bash 環境では、スクリプトの実行方法によって結果が異なります。スクリプトを実行する方法...

Nginx リバース プロキシと負荷分散を実装する方法 (Linux ベース)

ここで nginx のリバース プロキシを試してみましょう。リバースプロキシ方式とは、インターネット...

Linux の操作とメンテナンスの基本 httpd 静的 Web ページ チュートリアル

目次1. ウェアハウスを使用してhttpd lrzsz解凍ファイルを作成する2. ソースコードファイ...

MySQLが数十億のトラフィックをサポートする方法

目次1 マスター・スレーブの読み取り・書き込み分離1.1 コア2 マスタースレーブレプリケーション2...

nuxt.js 複数の環境変数の設定

目次1. はじめに2. シナリオ3. 環境を整える3.1 環境変数の挿入4. 最後に1. はじめに一...