【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)
私は必要に応じていちいち設定ファイルを変更していたのですが、これで済むことも結構ありそうです。
コメント