PDO 一般错误:2006 mysql server has gone away

Posted

技术标签:

【中文标题】PDO 一般错误:2006 mysql server has gone away【英文标题】:PDO general error: 2006 mysql server has gone away 【发布时间】:2019-10-13 14:47:49 【问题描述】:

我正在使用 linux 并尝试使用 php 7.2 创建一些表,但是当我执行命令时它会给出如下错误。谁能帮我解决这个问题?

[PDOException] SQLSTATE[HY000] [2006] mysql 服务器已消失 [ErrorException] PDO::__construct(): MySQL 服务器已消失

class Database extends PDO
    function __construct()
        $options = array(
            PDO::ATTR_PERSISTENT => true,
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
        );
        try
            parent::__construct(DB_TYPE.':host='.DB_HOST.';dbname='.DB_NAME.';charset=utf8',DB_USER,DB_PASS, $options);
        catch (PDOException $e) 
            echo "Got PDOException\n";
            var_dump($this);
        

    

我无法将此页面的说明设置为我拥有的课程 https://dev.mysql.com/doc/refman/8.0/en/gone-away.html

【问题讨论】:

ATTR_PERSISTENT 选项会导致问题。 PHP 认为连接仍然存在,但它以某种方式关闭。所以你得到一个错误。见this question 不,很遗憾,这根本不重要 【参考方案1】:

$db->e​​xec('SET session wait_timeout=60');

【讨论】:

以上是关于PDO 一般错误:2006 mysql server has gone away的主要内容,如果未能解决你的问题,请参考以下文章

PHP PDO 等效于 mysql_num_rows [重复]

在docker上使用laravel时无法连接到mysql数据库(未找到,pdo,连接被拒绝)

PDO 错误:SQLSTATE [HY000]:一般错误:2031

使用 PDO 准备好的语句 MySQL 错误

无法使用 PDO 插入 MySQL 数据库....没有错误

在连接类中使用 PDO 时如何显示 mysql 错误?