获取特定的SQL错误代码或使用PHP';什么是PDO?
我试图根据失败查询的结果确定一个特定的SQL失败条件,并想知道以前是否有人做过类似的事情 在我的示例代码中,我试图在测试表中的一行上获得锁,然后处理响应获取特定的SQL错误代码或使用PHP';什么是PDO?,php,mysql,exception,pdo,mariadb,Php,Mysql,Exception,Pdo,Mariadb,我试图根据失败查询的结果确定一个特定的SQL失败条件,并想知道以前是否有人做过类似的事情 在我的示例代码中,我试图在测试表中的一行上获得锁,然后处理响应 $sql = " select tt_idno from testtab ". " where tt_idno = ? for update nowait "; $testtab_Lock = $db->prepare($sql); try { $db->beginTransaction(); $t
$sql = " select tt_idno from testtab ".
" where tt_idno = ? for update nowait ";
$testtab_Lock = $db->prepare($sql);
try {
$db->beginTransaction();
$testtab_Lock->execute([1]);
$db->commit();
} catch(Exception $log) {
$db->rollback();
}
问题是,如果记录被锁定,我希望这个查询会失败,在这种情况下,它正在做它应该做的事情。理想情况下,我希望用如下方式处理异常
} catch(Exception $log) {
$db->rollback();
if($locked) {
throw new Exception("Locked but everything is fine");
} else {
throw new Exception("Panic");
}
}
我正在阅读PDO的getCode()的一些文档,并尝试使用它,但它只提供了接近的SQLSTATE,但有点过于通用
} catch(Exception $log) {
echo "<span>" . $log->getCode() . "</span><br />";
}
}捕获(异常$log){
echo“$log->getCode()”
;
}
这给了我SQLSTATE HY000,但我想要的错误代码是1205(我使用的是MariaDB文档:)
有没有其他方法可以通过PHP的PDO获取SQL错误代码或识别锁超时
注意
我正在使用MariaDB(10.3)和PHP(7.2)您是否尝试读取错误消息?也许它告诉你一些更有意义的事情你试过
errorInfo()
?它包含特定于驱动程序的错误代码和消息:wow errorInfo()正是我要找的,请您作为答案发布,以便我可以接受@icssancheswave您尝试读取错误消息了吗?也许它告诉你一些更有意义的事情你试过errorInfo()
?它包含特定于驱动程序的错误代码和消息:wow errorInfo()正是我想要的,请您作为答案发布,以便我可以在@Icssanches接受它