当写入73个或更多元素时,MySQL服务器已经消失了



我正在使用PDO和MySQL。

基本上,每次我尝试插入/更新73个或更多的元素,我得到一个"MySQL服务器已经走了"的错误。它发生在各种不同的脚本中,做着非常不同的事情。

下面是我使用

的代码示例
try
{
    $bdd = new PDO('mysql:host=mysql.hostinger.fr;dbname=XXXX', 'XXXX', 'XXXX');
}
catch(Exception $e)
{
        die('Erreur : '.$e->getMessage());
}
$prepare = 'UPDATE table SET field = ? WHERE id = ?';
$update = $bbd->prepare($prepare);
foreach ($elements as $el){
    $update->execute(array($el['value'], $el['id']));
    echo 'error code : <br />';
    var_dump($update->errorCode());
    echo '<br />error info : <br />';
    var_dump($update->errorInfo());
}

如果$elements有超过73个元素,则数据库不会更新,对于每个$el,我得到以下结果:

error code :
string(5) "HY000"
error info :
array(3) { [0]=> string(5) "HY000" [1]=> int(2006) [2]=> string(26) "MySQL server has gone away" }

根据我的测试,只有修改的元素数量才会产生错误。(而不是诸如:查询的长度,我正在更新的元素的大小,我正在为每个元素更新的字段数量)。此外,值得注意的是,无论是73+查询每个更新1个元素(如上面的代码),还是一个查询更新73+元素,都不会出现错误。

我知道问题可能是因为服务器超时,但72个元素修改似乎非常小。我为我的托管公司开了一张票,我在等答复,但也许这里的人也能事后提供帮助。

提前感谢。

注意:我试着在连接到数据库之前输入以下内容,但它什么也没做:

ini_set('mysql.connect_timeout', 300);
ini_set('default_socket_timeout', 300);

附加信息:当使用phpMyAdmin,没有问题,即使请求大于73个元素。

如果你对MySQL服务器有完全的控制权,你应该尝试改变my.cnf文件,然后重新启动它。

[mysqld]
max_allowed_packet=16M

相关内容

  • 没有找到相关文章