从mysql迁移到PDO的2006错误代码映射


2006 error code mapping for migrating from mysqli to PDO

我正在转换一个PHP代码,它使用mysqli连接到mysql数据库,PHP代码使用PDO连接到mysql数据库。

是否有一个SQLSTATE相当于mysql中的错误码2006 ?

因为我的一段代码是这样写的:

switch($this->_dbi->errno){
    case 2006:
        $this->close();
        throw new Exception();
        break;
}

如何使用PDO重写此代码?

SQLSTATE是PDO::errorCode的返回值。

错误2006(CR_SERVER_GONE_ERROR)表示MySQL服务器已经离开

可以使用PDO::errorInfo的数组。你会得到一个像这样的数组:

Array
(
    [0] => HY000
    [1] => 1
    [2] => near "bogus": syntax error
)
  • 0:这与PDO::errorCode上的值相同。
  • 1:错误号。不同的数据库提供程序不同,但这里是您的错误编号2006。
  • 2:错误信息/描述。

你的例子看起来像这样:

switch ($pdo->errorInfo()[1]) {
    case 2006:
        $this->close();
        throw new Exception();
        break;
}