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

推薦する

Vueはデジタル千単位区切り形式をグローバルに実装します

この記事の例では、Vue がデジタル 3 桁区切り形式をグローバルに実装するための具体的なコードを参...

Dockerfileを使用してApacheイメージを作成する方法

目次1. Dockerイメージ2. 既存のイメージに基づいてインスタンスを作成する3. ローカルテン...

XHTML ドキュメントで JavaScript と CSS を正しく使用する方法

ますます多くのウェブサイトで、XHTML が HTML4 に取って代わって急速に普及しています。しか...

docker-machineの使い方の詳しい説明

Docker-machineはDockerが公式に提供しているDocker管理ツールです。これは d...

MySQLのさまざまなロックに関する詳細な理解

目次ロックの概要ロックの分類データベース操作の粒度データ操作の種類MySQL ロックさまざまなストレ...

Zabbixで監視する必要があるホストを追加するための詳細な手順

監視ホストの追加ホスト 192.168.179.104 が zabbix 監視項目に追加されます (...

SpringBoot プロジェクトの Docker クイック デプロイメントの紹介

1. Dockerをインストールするまず Linux 環境を開き、次のコマンドを入力してインストール...

エレガントなJSコードの書き方

目次変数意味があり発音しやすい変数名を使用する同じ型の変数には同じ語彙を使用する検索可能な名前を使用...

HTML におけるメタの役割について (インターネットから収集および分類)

W3Cschoolではこのように説明しています<meta> 要素は、検索エンジン向けの説...

Linux環境にJDKとTomcatをインストールする詳細な手順

目次1. JDKをインストールする手動インストール2. トムキャット1. JDKをインストールする注...

Innodb で MySQL の 2T テーブルをすばやく削除する方法の例

序文この記事は主に、MySQL の Innodb で 2T の大きなテーブルをすばやく削除する方法に...

WeChatアプレットにナンバープレート入力機能を実装

目次序文背景大きな推測パターンを見つける構造とスタイルコンポーネントの実装パラメータキーボードの種類...

MySQL 一時テーブルの簡単な使用法

MySQL 一時テーブルは、一時的なデータを保存する必要がある場合に非常に便利です。一時テーブルは現...

Vue3スタイルのCSS変数注入の実装

目次まとめ基本的な例モチベーションデザインの詳細コンパイルの詳細採用戦略練習するヒント適切なプロパテ...

MySQL 5.7.17 winx64 のインストールと設定のチュートリアル

今日、MySQL データベースをコンピューターに再度インストールしました。システムを再インストールす...