1205: Lock wait timeout exceeded; try restarting transaction(ロック待機タイムアウトを超過)
MySQL意味
トランザクションが必要な行ロックを innodb_lock_wait_timeout 秒間待ったが取得できず、タイムアウトした。
原因
別のトランザクションがコミットもロールバックもせずに長時間ロックを保持している。アイドル状態のオープントランザクション、長時間実行される一括更新、または競合するホット行。
対処方法
ブロッキングトランザクションを特定する: performance_schema.data_lock_waits と data_locks を結合する (旧バージョンでは information_schema.innodb_lock_waits/innodb_trx)。ブロッキングトランザクションをコミット/ロールバックするか、必要なら KILL <trx_mysql_thread_id> で終了させる。トランザクションを短く保ち、アイドル状態で放置しない (autocommit/アプリケーションロジック)。必要なら innodb_lock_wait_timeout をワークロードに合わせて調整する。
同じデータベースの他の項目
- 1045Access denied for user (using password: YES/NO)(ユーザーのアクセス拒否)
- 1062Duplicate entry for key(キーの重複エントリ)
- 1213Deadlock found when trying to get lock; try restarting transaction(ロック取得時にデッドロックを検出)
- 1040Too many connections(接続数が多すぎる)
- 1064You have an error in your SQL syntax(SQL 構文エラー)
- 1146Table doesn't exist(テーブルが存在しない)
- 1054Unknown column in field list(フィールドリストに不明な列)