MySQL通用“Killed”错误在PHP脚本中

MySQL通用“Killed”错误在PHP脚本中

如果您经常使用MySQL和PHP进行开发,您可能会遇到一个通用的错误消息:

Killed

在phpMyAdmin中执行较大的SQL查询时可能会出现此错误,或者在使用PHP试图从MySQL数据库中检索较多数据时也可能会出现此错误。但是,这个错误消息并没有提供任何有用的信息,导致你难以排查问题。

阅读更多:MySQL 教程

原因

MySQL默认具有一个查询执行时间限制,如果任何查询运行时间超过这个限制,MySQL会自动终止查询并显示 “Killed” 错误消息。

解决方案

  1. 增加timeout

可以通过以下两种方式来增加PHP脚本连接MySQL的时间限制:

  • php.ini文件中修改max_execution_time的值。
  • 在PHP脚本中使用set_time_limit()函数。

需要注意的是,增加timeout仅治标不治本,当查询运行时间超过 timeout 值时,它仍可能依然回报 “Killed” 错误消息。

  1. 分批查询

当查询过大时,可以采用分批查询的方式实现。例如,你可能能够将查询细分为较小的部分,以便 MySQL 可以更好地处理查询。

具体做法是,将一个大查询分割为一系列有序的子查询,之后按顺序逐个执行子查询。例如,你可以使用以下代码:

// offset 表示从哪条数据开始查询
//limit 代表查多少条
sql = "SELECT * FROM tbl_name LIMIToffset, limit";result = mysqli_query(conn,sql);
while (row = mysqli_fetch_array(result)) {
    // 处理数据记录
}
  1. 优化查询

优化查询是一种更本质的解决方案,如下操作或许能解决问题:

  • 缩小查询范围:提筛选条件,如用到关联查询可以加上索引。
  • 更新MySQL配置:增加内存缓冲区、查询缓存等。

总结

当见到MySQL通用“Killed”错误时,我们有很多解决方案可以尝试,如增加timeout、分批查询以及优化查询等。根据情况,需要采用合适的方法来解决问题,以确保良好的开发体验。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程