ZBLOG

Query execution was interrupted, maximum statement execution time exceeded when dumping table `xxl_job_log` at row: 134188

这个错误表明在导出 xxl_job_log 表数据时,执行时间超过了最大允许的执行时间限制。以下是几种解决方案:

1. 增加超时时间

-- MySQL(临时设置)
SET SESSION max_execution_time = 0; -- 设置为0表示无限制
-- 或者
SET GLOBAL max_execution_time = 3600000; -- 设置为1小时

-- MySQL 8.0+
SET SESSION MAX_EXECUTION_TIME = 0;

2. 分批导出数据

-- 按ID范围分批导出
SELECT * FROM xxl_job_log WHERE id BETWEEN 1 AND 100000;
SELECT * FROM xxl_job_log WHERE id BETWEEN 100001 AND 200000;
-- ...继续直到完成所有数据

3. mysqldump使用参数优化

# 增加超时时间并禁用某些检查
mysqldump --max-allowed-packet=512M \
          --net-read-timeout=600 \
          --net-write-timeout=600 \
          --lock-tables=false \
          database_name xxl_job_log > dump.sql

# 或者使用where条件分批导出大表
mysqldump database_name xxl_job_log --where="id < 200000" > part1.sql

4. MySQL配置永久修改(需要重启)

# my.cnf配置文件
[mysqld]
max_execution_time=0           # MySQL服务器端执行超时时间
net_read_timeout=600           # 网络读取超时时间(秒)
net_write_timeout=600          # 网络写入超时时间(秒)

[mysql]
connect_timeout=60             #客户端连接超时时间(秒)

##5. PHPMyAdmin等工具的超时设置
如果使用Web管理工具,还需要调整:

  • PHP配置中的 max_execution_time
  • Nginx/Apache的超时配置

##6. 推荐方案:使用WHERE子句过滤

--只导出最近的数据或特定时间段的数据  
SELECT * FROM xxl_job_log 
WHERE trigger_time >= '2023-01-01' 
   AND trigger_time < '2024-01-01';

建议先评估该表的数据量和实际需求,如果不需要全部历史数据,考虑只导出必要的时间范围内的数据。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=24419

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?