Got a packet bigger than 'max_allowed_packet' bytes

MySQLでSQLクエリを実行したときに次のようなエラーが出ることがあります。

#1153 - Got a packet bigger than 'max_allowed_packet' bytes

このときデータベースサーバに送信したSQL文が長いことが考えられます。
画像データをデータベースに保存しようとしたときなど。

そのときにはまずMySQLのmax_allowed_packetの設定値を調べます。

SQL文で

show variables like 'max_allowed_packet';

と実行すると表示されます。

mysql> show variables like 'max_allowed_packet';
+--------------------+---------+
| Variable_name      | Value   |
+--------------------+---------+
| max_allowed_packet | 1048576 | 
+--------------------+---------+
1 row in set (0.00 sec)

この値はバイト単位で表示されるので、
1,048,576byte = 1,024Kbyte = 1Mbyte

この設定値を変更するには、MySQLの設定ファイルmy.cnfを変更します。
Linuxだと
/etc/my.cnf

FreeBSDだと
/usr/local/etc/my.cnf

Windowsだと
C:\Windows\my.ini
C:\my.cnf
C:\Program Files\MySQL\MySQL Server x.x\my.ini

次の値を変更します。

[mysqld]
max_allowed_packet=8M

設定を変更した後にMySQLを再起動すると設定が反映されます。

[参考記事] LinuxでMySQLを再起動する方法
[参考記事] WindowsでMySQLを再起動する方法

変更後は設定が反映されているかを確認します。

mysql> show variables like 'max_allowed_packet';
+--------------------+---------+
| Variable_name      | Value   |
+--------------------+---------+
| max_allowed_packet | 4194304 | 
+--------------------+---------+
1 row in set (0.00 sec)

関連記事

スポンサーリンク

CoreTemp plugin CoreTempプラグイン

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る