为什么signal关键字在mySQL 5.1.48中不起作用?

为什么signal关键字在mySQL 5.1.48中不起作用?,mysql,mysql-5.1,Mysql,Mysql 5.1,我使用的是mysql v5.1.48和红色。但是代码 DELIMITER $$ CREATE PROCEDURE `CoreRaiseError`() BEGIN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'An error occurred', MYSQL_ERRNO = 1001; END$$ 提出 SQL错误1064:您的SQL语法有错误;检查手册 对应于MySQL服务器版本的正确语法 在“SQLSTATE”45000”附近使用

我使用的是mysql v5.1.48和红色。但是代码

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

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

从哪个版本信号开始成为关键字?如何在mysql的早期版本中引发异常

谢谢。

如MySQL 5.1版中所述:

与条件相关的其他语句包括
信号
重新信号
、和
获取诊断
。MySQL 5.5之前不支持
SIGNAL
RESIGNAL
语句。MySQL 5.6之前不支持
GET DIAGNOSTICS
语句

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

CALL raise_error;

我不得不改变一个很好的触发器,以防止删除某些类型的记录。在5.6中测试,一切都很酷。然后我发现部署到5.1时出现了问题,所以这对我来说很有效。我所做的是:
给你打电话\u可以\u不删除\u那些\u类记录
。lol.丑陋..但很有效,而且很容易在我的日志中找到。这里有一个问题你可能会喜欢:。