gpt4 book ai didi

忽略 MySQL 退出处理程序

转载 作者:可可西里 更新时间:2023-11-01 08:46:28 25 4
gpt4 key购买 nike

我的存储过程忽略了退出处理程序。我执行以下行:

CALL updateTemplate('MyObject', 'NewTemplate');

并收到错误:

Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails (db.objects, CONSTRAINT Object: Template Foreign Key FOREIGN KEY (TemplateId) REFERENCES templates (TemplateId) ON UPDATE CASCADE)

确实,约束确实失败了,因为模板表中不存在“NewTemplate”。但为什么我在下面的存储过程的退出处理程序中没有收到自定义错误消息?

CREATE DEFINER=`root`@`localhost` PROCEDURE `updateTemplate`(in inObjectId varchar(45), in inTemplateId varchar(45))
BEGIN

declare exit handler for 1452
begin
signal sqlstate '45000' set MESSAGE_TEXT = 'The template identifier is invalid.';
end;

UPDATE objects SET TemplateId=inTemplateId WHERE ObjectId=inObjectId;

END

有关信息,我正在运行 MySQL 5.6.20。

最佳答案

(感谢 GarethD)

这是由于版本 5.7.2 中修复的错误所致。

已升级到 MySQL 5.7.5,现在一切正常。

http://bugs.mysql.com/bug.php?id=68831

关于忽略 MySQL 退出处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27293886/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com