【发布时间】:2012-11-18 19:37:28
【问题描述】:
我将 PDO 与 OCI 驱动程序一起使用。我的一个特定的INSERT 查询导致触发错误:
ERROR at line 1:
ORA-01403: no data found
ORA-06512: at "FOO.BAR", line 5
ORA-04088: error during execution of trigger 'FOO.BAR'
但是,发生这种情况时不会引发异常。我正在使用ERRMODE_EXCEPTION,对于标准查询语法错误等会抛出异常,但对于源自触发器的任何错误不会。
在这种情况下,对$st->execute() 的调用也不会返回FALSE。此外,$st->errorInfo() 和 $st->errorCode() 也都无济于事:
array(3) {
[0]=>
string(5) "00000"
[1]=>
NULL
[2]=>
NULL
}
string(5) "00000"
当触发错误发生时,如何让 PDO 抛出异常?或者,如果这是不可能的,我如何以编程方式检测何时通过其他方式发生这种情况?我什至知道首先发生错误的唯一方法(除了数据库未更新)是$st->rowCount() 报告 0。但这本身并不是确定是否发生错误的唯一或可靠方法。 ..
【问题讨论】:
-
能分享一下触发错误的PHP代码吗?