[MySQL] Lock wait timeout exceeded 에러

MySQL + INNODB 를 사용하는 시스템의 경우 위와 같은 에러를 만날 수 있다.

MySQL은 트랜젝션을 사용할 시 Table Lock(테이블 전체를 잠그고 사용)을 걸고 트랜젝션에 돌입하게 되는데 이때에 다른 쿼리는 이 테이블에 접근 할 수 없다.

하지만 해당 쿼리가 느려지거나 교착상태(Dead Lock)에 빠지게 되면 관련된 다른 쿼리들은 모두 대기하게 되는데 어때에 타임아웃 시간이 짧을 경우 Lock wait timeout exceeded 에러가 발생한다.

이때에 MySQL 설정의 innodb_lock_wait_timeout 의 값을 수정하여 이 문제를 해결할 수 있다.

디폴트는 50초이다. 무리하게 작게 설정되어있거나 오래걸리는 쿼리가 부득이 하게 필요할 경우 적당히 큰 값을 정해주면 되겠다.