PHP MySQLi插入查询错误 - 服务器已断开连接

3
尝试插入记录数组时,我遇到了以下错误: 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 的结果: 在这里输入图片描述

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

错误: 在这里输入图片描述

要插入多少条记录?“MySQL服务器已断开连接”是因为PHP与MySQL失去了连接。 - Fakhruddin Ujjainwala
@FakhruddinUjjainwala 需要插入大约50000条记录。 - Kunwarbir S.
2
将php.ini中的设置更改为max_execution_time = 0(或3600000)。 - Dhaval Patel
3个回答

2

MySQL服务器失去连接可能是由于超出mysql数据包大小限制引起的。 请检查MySQL变量max_allowed_packet,并尝试增加它。


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 条语句。


@KunwarbirS,很高兴能帮到你。:) - Fakhruddin Ujjainwala

0

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

请在您的mysql配置文件中更改此行(通常位于/ etc / mysql)

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

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

max_connections=90
max_user_connections=60

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

现在假设您将超时时间更改为15并且查询需要15秒钟,那么您的服务器一次只能服务2个连接。

希望这有所帮助!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接