답변:
innodb_lock_wait_timeout 을 설정하여 InnoDB의 잠금 대기 제한 시간 값을 늘리는 것을 고려해야합니다 . 기본값은 50 초입니다.
mysql> show variables like 'innodb_lock_wait_timeout';
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| innodb_lock_wait_timeout | 50 |
+--------------------------+-------+
1 row in set (0.01 sec)
/etc/my.cnf이 줄을 사용 하여 영구적으로 더 높은 값으로 설정할 수 있습니다
[mysqld]
innodb_lock_wait_timeout=120
mysql을 다시 시작하십시오. 지금 mysql을 다시 시작할 수 없으면 다음을 실행하십시오.
SET GLOBAL innodb_lock_wait_timeout = 120;
세션 기간 동안 설정할 수도 있습니다.
SET innodb_lock_wait_timeout = 120;
그 뒤에 쿼리
액세스하려는 데이터베이스 내용이 (일반적으로 오래 실행되는) 이전 프로세스에 의해 잠겨 있으면이 메시지가 표시됩니다. MySQL은 잠금이 해제되고 해당 오류가 발생하기 전에 잠금이 제거 될 때까지 일정 시간 동안 대기합니다. 일관된 시간으로 이러한 오류 메시지가 표시 될 때 추적 할 수있는 경우 서버가 그 시점에 수행중인 다른 작업을 확인해야합니다 (예 : 데이터베이스 백업 실행). 이렇게함으로써 잠금을 생성 할 수있는 프로세스가 무엇인지에 대한 가능성을 좁힐 수 있어야합니다 (항상 그렇게하는 것은 아니지만 약간의 시행 착오가있을 수 있습니다).
이 문제의 원인은 데이터베이스 연결이 종료되기 전에 많은 사용자 정의 스크립트를 실행하고 스크립트를 종료하는 것입니다.
무언가 쿼리 실행을 차단하고 있습니다. 쿼리의 테이블 중 하나에서 다른 쿼리를 업데이트, 삽입 또는 삭제하는 경우가 많습니다. 그게 무엇인지 찾아야합니다.
CLI에서 MySQL에 로그인하여 다음 명령을 실행할 수있는 경우
SHOW PROCESSLIST;
블로킹 / 슬립 프로세스를 찾으면 프로세스를 찾아 id실행하십시오.
KILL {id};
초기 쿼리를 다시 실행하십시오.
이 링크가 도움이 될 수 있습니다. SQLSTATE [HY000] : 일반 오류 : 1205 잠금 대기 시간 초과가 초과되었습니다. 트랜잭션 Magento를 다시 시작하십시오 .
서버에서 php.ini의 실행 시간을 늘리거나 호스팅 공급자에게 문의하십시오.