Mysql2::Error: MySQL client is not connected: ROLLBACKを解消した話
今回題名の通り「Mysql2::Error: MySQL client is not connected: ROLLBACK」というエラーがなかなか消えなかったので、その対処法をメモしておきます。
原因1:時間切れ
1つ目の原因として考えられるのが「タイムアウトしてしまった」という場合です。
その場合はタイムアウトする時間を指定してあげましょう。
MySQLには「innodb_lock_wait_timeout」というものがあり、ここでタイムアウトの時間を指定してあげることができます。
指定の方法(mac)は、
1、ターミナルでMySQLにログインする
2、以下のコマンドを実行
SET GLOBAL innodb_lock_wait_timeout = 数値
以上です。ここの数値に入れた値が反映されます。
確認の方法は
1、ターミナルでMySQLにログインする
2、以下のコマンドを実行
SHOW VARIABLES LIKE 'innodb_lock_wait_timeout';
Variable_name | Value |
---|---|
innodb_lock_wait_timeout | 28800 |
原因2:パケットのサイズによるもの
2つ目の原因として考えられるのが「いれようとするデータ容量が大きすぎる」という場合です。
この場合は、入れられるデータ容量の最大値を指定してあげましょう。
MySQLには「max_allowed_packet」というものがあり、ここでデータ容量の最大値を指定してあげることができます。
指定の方法(mac)は、
1、ターミナルでMySQLにログインする
2、以下のコマンドを実行
SET GLOBAL max_allowed_packet = 数値;
以上です。ここの数値に入れた値が反映されます。
確認の方法は
1、ターミナルでMySQLにログインする
2、以下のコマンドを実行
SHOW VARIABLES LIKE 'max_allowed_packet';
Variable_name | Value |
---|---|
max_allowed_packet | 4194304 |
私は、この二つの方法を実装したところ無事解決しました。(もしかしたら後半だけだったかもしれない・・・)
参考までに