MySQLで行ロックのタイムアウトを設定する
#MySQL
https://gihyo.jp/dev/serial/01/mysql-road-construction-news/0075#sec2_h1
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に同様の設定が可能な模様
https://abicky.net/2020/10/26/071005/
code:ruby
ActiveRecord::Base.establish_connection(
adapter: 'mysql2',
host: ENV'MYSQL_HOST',
port: ENV'MYSQL_PORT',
username: ENV'MYSQL_USERNAME',
password: ENV'MYSQL_PASSWORD',
database: ENV'MYSQL_DATABASE',
variables: {
innodb_lock_wait_timeout: 5,
},
)