MySQLのシステム変数のwait_timeoutを、mysqlコマンドで接続して確認すると、my.cnfで変更していても、
show variables では変更されていないように見える。
しかし、
show global variables で確認すれば変更されているのがわかる。
システム変数には、グローバル変数とセッション変数の2種類があるのだ。
http://ftp.cc.uoc.gr/mirrors/mysql/doc/refman/5.1/ja/using-system-varia…
そして、セッション変数のwait_timeoutは、グローバルのwait_timeout値か、interactive_timeout値かのどちらかになるが、それはクライアントのタイプによるとのこと。
http://ftp.cc.uoc.gr/mirrors/mysql/doc/refman/5.1/ja/server-system-vari…
つまり、my.cnfに
[mysqld]
wait_timeout = 600
interactive_timeout = 700
とあると、
mysql> show variables like '%timeout%'; +----------------------------+-------+ | Variable_name | Value | +----------------------------+-------+ | connect_timeout | 10 | | delayed_insert_timeout | 300 | | innodb_lock_wait_timeout | 50 | | innodb_rollback_on_timeout | OFF | | interactive_timeout | 700 | | net_read_timeout | 30 | | net_write_timeout | 60 | | slave_net_timeout | 3600 | | table_lock_wait_timeout | 50 | | wait_timeout | 700 | +----------------------------+-------+ 10 rows in set (0.00 sec) mysql> show global variables like '%timeout%'; +----------------------------+-------+ | Variable_name | Value | +----------------------------+-------+ | connect_timeout | 10 | | delayed_insert_timeout | 300 | | innodb_lock_wait_timeout | 50 | | innodb_rollback_on_timeout | OFF | | interactive_timeout | 700 | | net_read_timeout | 30 | | net_write_timeout | 60 | | slave_net_timeout | 3600 | | table_lock_wait_timeout | 50 | | wait_timeout | 600 | +----------------------------+-------+ 10 rows in set (0.00 sec)
となる。
show variables は、global を明示しないとセッション値を返す。
mysqlコマンドは、 interactive_timeoutグローバル値を、wait_timeoutセッション値にする。