MySQL Error Code: 2013 와 Error Code: 1205

Last Updated on 3월 14, 2021 by 태랑(정현호)



MySQL 에서의 타임아웃은 여러가지가 있을수 있습니다.

그 중에서 이번 포스팅에서는 Error Code: 2013 와 Error Code: 1205 2개의 에러에 대해서 확인 해보려고 합니다.

2개의 에러는 SQL 쿼리 실행 중 발생 되는 time-out 관련 에러 입니다.

DML 처리 과정에서 2가지의 이슈를 만나는 케이스도 있을수 있어서 입니다.





Error Code: 2013

먼저 Error Code: 2013. Lost connection to MySQL server during query 는 MySQL WorkBench(워크 벤치) 툴에 의해서 주로 발생되는 에러 입니다.


아래와 같은 메뉴에서 확인 할 수 있습니다.
매뉴 -> Edit -> Preferences -> SQL Editor 




"DBMS Connection read timeout interval" 항목에 의해서 Error Code: 2013. Lost connection to MySQL server during query 가 발생되는 케이스가 다수 입니다.


Select 또는 DML 또한 30초 이상 수행될 수 도 있기 때문에 SQL 정상 처리를 위해서 위의 값을 늘려주는 것이 좋습니다.
(30초 이상 수행되는 쿼리를 수행되는 경우는 보편적인 상황임)







Error Code: 1205

Error Code: 1205 Lock wait timeout exceeded; try restarting transaction

에러는 DML 수행시 Lock에 의해서 대기 하는 중에 MySQL 에서 설정된 Limit 에 의해 최대 대기시간을 초과하여 Time-out 에러를 만난 상황 입니다.


Default 는 50초 입니다

innodb_lock_wait_timeout

Command-Line Format--innodb-lock-wait-timeout=#
System Variableinnodb_lock_wait_timeout
ScopeGlobal, Session
DynamicYes
TypeInteger
Default Value50
Minimum Value1
Maximum Value1073741824



Case 

1. 이전 상황에서 Error Code: 2013 를 받아서 세션이 종료 된 이후 Workbench 에서는 시간을 30초에서 충분히 늘려주고 나서 다시 DML 처리를 시도 하는 과정에서 


2. 이전의 세션이 MySQL 서버에서는 종료되지 않고 남아 있는 상황에서 다시 DML 처리를 위해 실행을 하였으나 남아 있는 세션에 의해 Lock 이 걸려서 대기 하게 되고 50초가 초과하여 Error Code: 1205 를 받게 된 상황이 발생될 수 있습니다


innodb_lock_wait_timeout 파라미터와 관련 되어 있으며 Default는 50초 입니다.



파라미터에 대한 변경은 my.cnf 에서 변경 후 재기동 하거나 

# vi /etc/my.cnf

[mysqld]
innodb_lock_wait_timeout


또는 Dynamic 설정으로 아래와 같이 바로 반영 할 수 있습니다.

set global innodb_lock_wait_timeout=600;


다만 DML이 Error Code: 1205 을 받아서 50초 이상 대기하였다가 time-out이 발생된 상황은 정상적인 상황이 아니거나 또는 계속 기다려야 하는 상황은 아닐 확률이 높습니다

Error Code: 1205 를 받았다면 선행 세션(Lock을 잡고 트랜잭션을 진행중인)이 정상적으로 처리 중인 세션인지 아니면 비정상 세션인지를 먼저 확인 해야 합니다.

확인 후 계속 기다려야 할지, 아님 일단 중지하고 나중에 다시 시도해야할지 , 선행 세션을 kill session 으로 정리하고 진행해야 할지는 세션 모니터링 과 innodb tx lock 정보를 토대로 확인/결정 해야 합니다.


아래 3개의 딕셔너리를 통해서 확인 해보실 수 있습니다.

information_schema.innodb_lock_waits
information_schema.innodb_locks
information_schema.innodb_trx




연관된 다른 글 

답글 남기기