MySQLに接続してからの 接続維持時間(アイドリングするタイムアウト秒数)は
デフォルトで28800秒(8時間)に設定されています。
デフォルトの状態で「wait_timeout」を確認してみると下記のように「28800」になっています。
mysql> show global variables like '%wait%'; +---------------------------------------------------+----------+ | Variable_name | Value | +---------------------------------------------------+----------+ | innodb_lock_wait_timeout | 50 | | innodb_spin_wait_delay | 6 | | lock_wait_timeout | 31536000 | | performance_schema_events_waits_history_long_size | 10000 | | performance_schema_events_waits_history_size | 10 | | wait_timeout | 28800 | +---------------------------------------------------+----------+
デフォルトの時間を変更する場合はセッション変数(SET文)での変更が可能です。
ただ再起動した際に設定した内容はリセットされますので、
設定ファイル(my.cnf)に記載の上、MySQLの再起動が必要になる。
セッション変数で変更(SET文)
・300秒(5分)に変更する
mysql>set global wait_timeout=300; Query OK, 0 rows affected (0.00 sec)
mysql> show global variables like '%wait%'; +---------------------------------------------------+----------+ | Variable_name | Value | +---------------------------------------------------+----------+ | innodb_lock_wait_timeout | 50 | | innodb_spin_wait_delay | 6 | | lock_wait_timeout | 31536000 | | performance_schema_events_waits_history_long_size | 10000 | | performance_schema_events_waits_history_size | 10 | | wait_timeout | 300 | +---------------------------------------------------+----------+
グローバル変数で変更(my.cnfを編集)
・300秒(5分)に変更する
my.cnfに下記を追加後に再起動を行う
wait_timeout=300
mysql> show global variables like '%wait%'; +---------------------------------------------------+----------+ | Variable_name | Value | +---------------------------------------------------+----------+ | innodb_lock_wait_timeout | 50 | | innodb_spin_wait_delay | 6 | | lock_wait_timeout | 31536000 | | performance_schema_events_waits_history_long_size | 10000 | | performance_schema_events_waits_history_size | 10 | | wait_timeout | 300 | +---------------------------------------------------+----------+