我碰到了
PHP致命错误:未捕获的PDOException:SQLSTATE [HY000]:常规错误:2006 MySQL服务器已消失
我正在寻找一种方法来更改超时和max_allowed_packet,而无需修改配置文件或重新启动服务器。我发现第一个具有名为ATTR_TIMEOUT
的PDO ATTRIBUTE,但是我无法找到该大小的属性,我唯一找到的是一个MYSQL_ATTR_MAX_BUFFER_SIZE
,它似乎已被弃用。 。我还有其他方法或属性可以使用吗?
并且在任何人问之前:我根本无法修改配置文件。
这是连接的完整代码,包括已弃用的属性:
try {
$conn = new PDO('mysql:host=host;dbname=dbname','','');
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$conn->setAttribute(PDO::ATTR_TIMEOUT, 360);
$conn->setAttribute(PDO::MYSQL_ATTR_MAX_BUFFER_SIZE, 1024*1024*10);
}catch(PDOException $e){
echo "ERROR ACCOUNTING: " . $e->getMessage();
}