2021년에 작성한 노트를 옮겨 적은 것입니다.
보통의 상황
'Lock wait timeout exceeded; try restarting transaction'
DB 조회
-- mysql
use information_schema;
select * from INNODB_LOCKS; -- 프로그램 실행 중 lock 들
select * from INNODB_LOCK_WAITS; -- lock 기다리는 것들
select * from INNODB_TRX; -- 트랜잭션 상태들을 나타내준다 → trx_id, trx_mysql_thread_id
show processlist; -- 각 mysql thread id의 실행 유저, 호스트, db 정보 확인
kill 46; -- 특정 thread 종료
-- innodb 상태 조회
show engine innodb status;
Transaction & Promise and all:
https://medium.com/@alkor_shikyaro/transactions-and-promises-in-node-js-ca5a3aeb6b74
Transaction setting 확인
MariaDB [bee_data]> SHOW VARIABLES WHERE Variable_name='autocommit';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit | ON |
+---------------+-------+
MariaDB [bee_data]> show variables like 'innodb_rollback_on_timeout';
+----------------------------+-------+
| Variable_name | Value |
+----------------------------+-------+
| innodb_rollback_on_timeout | OFF |
+----------------------------+-------+