【发布时间】:2013-08-06 01:36:40
【问题描述】:
我知道 mysql 5.5 允许使用SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Error: ...'; 来引发用户定义的错误。如果将 INSERT 放在某些表上的 BEFORE INSERT TRIGGER 中,此错误将停止该操作。并且PDO 也可以方便地捕捉PDOException 并输出errorinfo() 即MESSAGE_TEXT 在SIGNAL SQLSTATE 中定义的MESSAGE_TEXT。
但是,我租用的服务器上的mysql版本是mysql 5.1。我想知道如何使用 mysql 5.5 中的 SIGNAL SQLSTATEMENT 等功能引发用户定义的错误。
- 在
before insert触发器中中断insert操作 - 可以被
PDO捕获
我发现了一些关于类似问题的主题,并且我尝试了这些:
-
调用一个不存在的过程
调用`sp_raise_error`;
使用函数抛出错误
https://blogs.oracle.com/svetasmirnova/entry/how_to_raise_error_in
PDO 无法捕获两者。那么有什么解决办法呢? (我在 MySQL5.5 上测试过)
【问题讨论】:
-
你能通过简单的语法错误导致异常吗?
-
@YourCommonSense 是的,
PDO将捕获 sql 语法错误