1969: MariaDB: Query execution was interrupted (max_statement_time exceeded)(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 提示)。拆分大型操作。
同一数据库的其他条目
- 3730Cannot drop table referenced by a foreign key constraint(无法删除被外键约束引用的表)
- 2013Lost connection to MySQL server during query(查询期间与 MySQL 服务器的连接丢失)
- 1153Got a packet bigger than 'max_allowed_packet' bytes(收到的数据包大于 'max_allowed_packet' 字节)
- 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 约束)