You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MariaDB创建跨表取值触发器调用sys_exec报错1054问题求解

问题原因

你遇到的1054报错本质是SQL执行过程中找不到指定字段,结合你的场景,大概率是以下两种情况:

  1. 触发器创建时写错了查询字段名,你代码中写的是anotherfield,但报错提示的是anothervalue,明显存在名称不匹配的问题
  2. 之前创建过同名触发器未删除,实际运行的是包含错误字段名的旧触发器逻辑

解决步骤

  • 第一步:先删除已存在的同名触发器,避免旧逻辑残留,执行语句:
    DROP TRIGGER IF EXISTS table1_after_update;
  • 第二步:核对table2的实际字段名,执行以下语句查看表结构,确认要查询的字段准确名称:
    DESC table2;
  • 第三步:使用修正后的触发器创建语句,同时增加空值、多行返回的兼容逻辑,避免后续出现其他异常:
DELIMITER $$
CREATE TRIGGER `table1_after_update` AFTER UPDATE ON `table1` 
FOR EACH ROW BEGIN
    DECLARE myvar INT(10) UNSIGNED DEFAULT 0;
    -- 匹配到对应记录再赋值,避免空值
    IF EXISTS (SELECT 1 FROM table2 WHERE id = NEW.id) THEN
        SELECT anotherfield INTO myvar FROM table2 WHERE id = NEW.id LIMIT 1;
    END IF;
    -- 空值兜底,避免CONCAT结果为NULL导致sys_exec调用失败
    SET @exec_var = sys_exec(CONCAT('test.sh ', NEW.id, ' ', IFNULL(myvar, 0)));
END$$
DELIMITER ;

内容的提问来源于stack exchange,提问作者Tubthumper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 17:36:03