2012-09-11 2 views

답변

7

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; 
}