PHP MySQLi插入查询错误 - 服务器已经消失

时间:2016-03-01 09:43:47

标签: php mysql mysqli

在尝试插入记录数组时,我收到错误: 1. MySQL服务器已经消失 2.读取结果集的标题

时出错

以下是详细信息:

// DB2
$host1 = 'localhost';
$user1 = 'root';
$pass1 = '';
$db1   = 'my_db';
$conn1 = mysqli_connect($host1, $user1, $pass1, $db1);

....
...
...
...

//echo '<pre>'; print_r($countryArr); die;

$ countryArr结果: enter image description here

$query = "INSERT INTO `cities` (`country_id`, `city`, `soft_delete`, `date_added`) VALUES " . implode(',', $countryArr);
mysqli_query($conn1, $query);

错误: enter image description here

3 个答案:

答案 0 :(得分:1)

第1步:

set_time_limit(0); // this will remove the time limit if any.

第2步:

同时检查ping以保持连接活动,http://php.net/manual/en/mysqli.ping.php

第3步

尝试批量执行插入。即500份陈述的批次。

答案 1 :(得分:1)

MySQL server has gone away可能是由于超出了mysql数据包大小的限制。 检查MySQL变量max_allowed_packet并尝试增加它。

答案 2 :(得分:0)

您的查询需要13秒以上才能执行,而您的mysql服务器设置为在小于13的秒数后终止连接。

更改mysql配置文件中的这一行(通常位于/ etc / mysql中)

wait_timeout=15 //any reasonable amount of time more than 13 seconds for your example

PS:您可能还需要更改允许的最大连接数以反映wait_time中的更改。为此,在mysql配置文件中更改这两行。

max_connections=90
max_user_connections=60

根据服务器的活动,可能需要更改最大连接数。例如,如果您的超时为5且您的最大连接数为30,并且假设所有查询都是长查询需要5秒钟来处理,那么您的服务器一次只能提供6个连接。

现在假设您将超时更改为15并且quires为15,那么您的服务器将只能提供2个连接。

希望有所帮助!