SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

【MySQL】SQLの最大長は?

普段意識することはないですが、MySQLのクエリの長さには制限値があります。

● どこで分かるの?
→ /etc/my.cnf に書いてある。 max_allowed_packet という設定項目。

こんな感じで書いてあります。

max_allowed_packet=32M

設定ファイルを変えて MySQL再起動で、制限値を変えることが可能です。

●サーバーにログインできないから見えないんだけど?
→MySQLの各種設定値、変数は SHOW VARIAVLES で見ることができる。

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

上記の場合なら、32MBみたいですね。と。

とてつもなく長いSQLを発行したり、データベースに画像を入れようとした方は、この制限値に出会ったことがあると思います。

そして、その接続限りの設定なら、自分で変更できてしまうことを、今さらながら確認しました。

mysql> set max_allowed_packet=12345678;
Query OK, 0 rows affected (0.00 sec)

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

私は必要に応じていちいち設定ファイルを変更していたのですが、これで済むことも結構ありそうです。

関連するメモ

コメント