MySQLで行ロックのタイムアウトを設定する
innodb_lock_wait_timeout
InnoDBにおける行ロックの待機時間(秒)となります。デフォルトは50秒で、オンラインでの変更可能です。待機時間を経過すると以下エラーが発生して、デフォルト設定ではタイムアウトしたステートメントのみがロールバックされます。トランザクション全体をロールバックするようにしたい場合は、innodb_rollback_on_timeoutをONにしてMySQLを起動する必要があります。
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
Railsのdatabase.ymlに同様の設定が可能な模様
code:ruby
ActiveRecord::Base.establish_connection(
adapter: 'mysql2',
variables: {
innodb_lock_wait_timeout: 5,
},
)