MySql で大きなデータを扱う

今起動しているmysqlのサイズの制限を知るには


$ mysql -u root -b -p
Enter password: ****
mysql> show variables like 'max_allowed_packet';
とすれば良い。

                                                              • +
Variable_name Value
                                                              • +
max_allowed_packet 1048576
                                                              • +

1 row in set (0.00 sec)

どうやら1MBに制限されているようだ。
これを16MBにしようと、何度も

mysql> set global max_allowed_packet = 16777216;
Query OK, 0 rows affected (0.00 sec)
を行ったのだが、結果は

mysql> show variables like 'max_allowed_packet';

                                                              • +
Variable_name Value
                                                              • +
max_allowed_packet 1048576
                                                              • +

1 row in set (0.00 sec)

と1MBのままなのである。
仕方が無いので、mysql を一旦抜けてみると

mysql> show variables like 'max_allowed_packet';

                                                                • +
Variable_name Value
                                                                • +
max_allowed_packet 16777216
                                                                • +

1 row in set (0.00 sec)

と反映されている。なんじゃこりゃ。

当然mysqlの再起動を行うと消えてしまうので、
/etc/my.conf にも設定を書いておく。


[mysqld]


max_allowed_packet = 16M
これで大きなサイズにも対応可能だ。