MySQL 错误代码:1193。未知的系统变量
Posted
技术标签:
【中文标题】MySQL 错误代码:1193。未知的系统变量【英文标题】:MySQL Error Code: 1193. Unknown system variable 【发布时间】:2013-01-18 16:36:11 【问题描述】:好的,我正在处理触发器,它告诉我它(mysql 工作台 5.2)无法识别此变量。*错误代码:1193。未知系统变量 error_msg_3*
我认为在触发器中使用它是正确的,请帮助我
CREATE TRIGGER controlla_MaxCARDINALITA_INSERT
BEFORE INSERT ON SENTIERO__HA__TAPPA
FOR EACH ROW
BEGIN
DECLARE max_cardinalita INTEGER;
DECLARE error_msg_3 CONDITION FOR SQLSTATE '99003';
SELECT COUNT(*) into max_cardinalita
FROM SENTIERO__HA__TAPPA
WHERE IDsentiero=NEW.IDsentiero;
IF max_cardinalita>=10 THEN
SIGNAL error_msg_3;
SET error_msg_3='INSERT: Il sentiero ha già il massimo numero di tappe consentito';
END IF;
END$$
编辑 ::
我试过了,效果不错
DECLARE msg VARCHAR(255);
set msg = concat('MyTriggerError: Trying to insert a negative value in trigger_test: ');
signal sqlstate '45000' set message_text = msg;
【问题讨论】:
【参考方案1】:根据MySQL docs的说法,#1193
的错误码是SQLSTATE
使用错误的代码。
消息:未知系统变量%s
而且,正如您在同一个 page 上看到的,SQLSTATE 99003
没有定义。
【讨论】:
请查看我的编辑,为什么该代码有效?表中没有 45000,我想 @Jimmy5nomana 请再次参考有关SIGNAL
子句用法的文档。它清楚地提到:SIGNAL 是“返回”错误的方式。 SIGNAL 向处理程序、应用程序的外部或客户端提供错误信息。要发出通用 SQLSTATE 值的信号,请使用“45000”,这意味着未处理的用户定义异常。
谢谢,最后一个问题:mysql 不允许我对同一个事件和动作时间使用多个触发器来处理一个表......所以我听说了函数和过程;他们是解决方案吗?我想用最简单的方法解决它,我很着急。谢谢
@Jimmy5nomana 为此,您可以在DBA stackexchange获得更好的建议
这不是理论!!!如果您有 3 个触发器,例如:AFTER UPDATE ON TABLE 1... 它们如何在该表上运行?以上是关于MySQL 错误代码:1193。未知的系统变量的主要内容,如果未能解决你的问题,请参考以下文章
#1193 - 尝试登录 phpmyadmin 时出现未知系统变量 'lc_messages'