【问题标题】:Why is signal keyword not working in mySQL 5.1.48?为什么信号关键字在 mySQL 5.1.48 中不起作用?
【发布时间】:2012-05-23 22:23:21
【问题描述】:

我正在使用 mysql v5.1.48 和红色 http://dev.mysql.com/doc/refman/5.5/en/signal.html。但是代码

DELIMITER $$
CREATE PROCEDURE `CoreRaiseError`()
BEGIN
  SIGNAL SQLSTATE '45000'
      SET MESSAGE_TEXT = 'An error occurred', MYSQL_ERRNO = 1001;
END$$

提出一个

SQL 错误 1064:您的 SQL 语法有错误;检查手册 对应于您的 MySQL 服务器版本以获得正确的语法 在'SQLSTATE'45000'附近使用

SIGNAL 是从哪个版本开始成为关键字的?如何使用旧版本的 mysql 引发异常?

谢谢。

【问题讨论】:

    标签: mysql mysql-5.1


    【解决方案1】:

    the manual 中针对 MySQL 5.1 版所述:

    其他与条件相关的语句有SIGNALRESIGNALGET DIAGNOSTICS。在 MySQL 5.5 之前,不支持 SIGNALRESIGNAL 语句。在 MySQL 5.6 之前不支持 GET DIAGNOSTICS 语句。

    要在旧版本的 MySQL 中引发错误,只需故意发出错误的命令。我经常CALL一个不存在的程序,例如:

    CALL raise_error;
    

    【讨论】:

    • 我不得不更改一个很好的触发器,以防止删除某些类型的记录。在 5.6 中对其进行了测试,一切都很酷。然后我发现部署到 5.1 失败了,所以这对我有用。我所做的是:call You_may_not_delete_those_kind_of_records。哈哈。丑陋..但可以在我的日志中轻松找到。
    • 这是一个您可能会喜欢的问题:mysql 5.1 signal an error to cause PDO exceptions
    猜你喜欢
    • 2017-06-25
    • 1970-01-01
    • 1970-01-01
    • 2015-03-23
    • 2012-07-03
    • 1970-01-01
    • 2020-12-08
    • 2013-05-30
    • 2011-04-22
    相关资源
    最近更新 更多