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 MySql,插入触发器

打开phpmyadmin时未知系统变量[重复]

#1193 - 尝试登录 phpmyadmin 时出现未知系统变量 'lc_messages'

我登录到 phpmyadmin。登录后我得到错误。

WAMPServer 安装 - phpMyAdmin 登录时出错 - 错误 #1193

Mysql未知变量错误