728x90
반응형

Mysql 에서 Insert 하는 과정에서 다음과 같이 에러가 발생했다.

OperationalError: (1205, 'Lock wait timeout exceeded; try restarting transaction')

 

메시지를 보면 알 수 있듯이 트렌젝션의 수행시간이 초과되면 Lock 이 걸리는 것을 알 수 있다.
만약 트랜젝션의 수행시간이 길다면 나누어서 실행하는 게 좋을 것 같다.

 

해결 방법은 다음과 같다.

 

mysql root 계정으로 접속한다.

mysql -uroot -p

 

다음과 같이 timeout 값을 확인해볼 수 있다.

select @@innodb_lock_wait_timeout;

 

 

확인해보면 아래와 같이  innodb_lock_wait_timeout 의 값이 50초로 되어있는 것을 확인할 수 있다.
이 시간을 늘려주면 된다.

 

mysql> select @@innodb_lock_wait_timeout;
+----------------------------+
| @@innodb_lock_wait_timeout |
+----------------------------+
|                         50 |
+----------------------------+
1 row in set (0.00 sec)

 

 

다음과 같이 변경할 수 있다.

set innodb_lock_wait_timeout= 28800;

 

 

변경 완료!

mysql> set innodb_lock_wait_timeout= 28800;
Query OK, 0 rows affected (0.00 sec)

mysql> select @@innodb_lock_wait_timeout;
+----------------------------+
| @@innodb_lock_wait_timeout |
+----------------------------+
|                      28800 |
+----------------------------+
1 row in set (0.00 sec)
728x90
반응형
복사했습니다!