PHP的死锁异常代码,MySQL PDOException?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP的死锁异常代码,MySQL PDOException?相关的知识,希望对你有一定的参考价值。

使用php PDO mysql,异常模式。

是否存在[MySQL]死锁的PDOException代码?

如果不是,还有其他选择吗?

答案

PDO::errorInfo, PDOException::errorInfo

MySQL Server Error Codes and Messages; Error: 1213 SQLSTATE: 40001 (ER_LOCK_DEADLOCK)

/*[...]*/

//error mode is exception
$pdoDBHandle->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

try
{
    /*[...]*/
}
catch(PDOException $exc)
{
    if(
        $exc->errorInfo[0]==40001 /*(ISO/ANSI) Serialization failure, e.g. timeout or deadlock*/;

        && $pdoDBHandle->getAttribute(PDO::ATTR_DRIVER_NAME)=="mysql"
        && $exc->errorInfo[1]==1213  /*(MySQL SQLSTATE) ER_LOCK_DEADLOCK*/
    )
    {
        /*[...]*/
    }
    else
        throw $exc;
}

以上是关于PHP的死锁异常代码,MySQL PDOException?的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 死锁与日志二三事

Day812.MySQL死锁问题 -Java 性能调优实战

MySQL死锁问题(转)

[译文]MySQL发生死锁肿么办?

mysql死锁(锁与事务)

mysql死锁问题分析