在尝试插入记录数组时,我收到错误: 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;
$query = "INSERT INTO `cities` (`country_id`, `city`, `soft_delete`, `date_added`) VALUES " . implode(',', $countryArr);
mysqli_query($conn1, $query);
答案 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个连接。
希望有所帮助!