1969: MariaDB: выполнение запроса прервано (превышен max_statement_time)
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). Разбивайте крупные операции.
Ещё по этой СУБД
- 3730Невозможно удалить таблицу, на которую ссылается ограничение внешнего ключа
- 2013Соединение с сервером MySQL потеряно во время запроса
- 1153Получен пакет больше 'max_allowed_packet' байт
- 1927MariaDB: ER_CONNECTION_KILLED: Connection was killed
- 1290ER_OPTION_PREVENTS_STATEMENT: running with the --read-only option
- 1836ER_READ_ONLY_MODE: Running in read-only mode
- 3819ER_CHECK_CONSTRAINT_VIOLATED: Check constraint is violated