1969: MariaDB: Query execution was interrupted (max_statement_time exceeded)
MySQL의미
MariaDB 전용(ER_STATEMENT_TIMEOUT): max_statement_time으로 정의한 최대 실행 시간을 초과해 쿼리가 중단되었다. MySQL에는 이 코드가 없으며, MySQL의 대응 오류는 3024(ER_QUERY_TIMEOUT, max_execution_time)이다.
원인
MariaDB에서 세션/전역 max_statement_time 한도 또는 SET STATEMENT max_statement_time=N FOR ...로 설정한 한도 초과. 비효율적인 실행 계획, 인덱스 누락, 대용량 데이터 스캔 또는 락 대기.
해결 방법
EXPLAIN으로 쿼리를 분석하고 인덱스 추가와 실행 계획 개선으로 속도를 높인다. 쿼리가 실제로 오래 실행되어야 한다면 MariaDB에서 한도를 높인다: SET SESSION max_statement_time = 60;(초) 또는 SET STATEMENT max_statement_time = 60 FOR SELECT ...; MySQL을 사용한다면 3024 항목을 참고한다(max_execution_time, 밀리초. MAX_EXECUTION_TIME 힌트). 큰 작업은 분할한다.
같은 데이터베이스의 다른 항목
- 3730Cannot drop table referenced by a foreign key constraint
- 2013Lost connection to MySQL server during query
- 1153Got a packet bigger than 'max_allowed_packet' bytes
- 1927MariaDB: ER_CONNECTION_KILLED: Connection was killed (연결이 종료됨)
- 1290ER_OPTION_PREVENTS_STATEMENT: running with the --read-only option (--read-only 옵션으로 실행 중)
- 1836ER_READ_ONLY_MODE: Running in read-only mode (읽기 전용 모드로 실행 중)
- 3819ER_CHECK_CONSTRAINT_VIOLATED: Check constraint is violated (CHECK 제약 조건 위반)