読者です 読者をやめる 読者になる 読者になる

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_nameValue
innodb_lock_wait_timeout28800
以上です。

原因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_nameValue
max_allowed_packet4194304

私は、この二つの方法を実装したところ無事解決しました。(もしかしたら後半だけだったかもしれない・・・)

参考までに