【战神引擎】商城购买报错 系统错误修复教程
下面是报错内容 因为小仙测试版本经常发现这方面错误 干脆发个教程
[Exception]: doError: SQL Error: Unknown column 'jl' in 'NEW' [Exception]: Update gamedata.yb_user_data set PTID = 'ptc86e7bc016108917fc', ChrName = '小仙源码网', YBNum = 9999998, LastModifyYBNumTime = Now() where (UserID = 180001000000012); [SQL Failed] Update gamedata.yb_user_data set PTID = 'ptc86e7bc016108917fc', ChrName = '小仙源码网', YBNum = 9999998, LastModifyYBNumTime = Now() where (UserID = 180001000000012);
下面是修复教程
解决办法
你可以采用以下两种方式对触发器进行修改:
方法一:删除有问题的触发器
解决办法
你可以采用以下两种方式对触发器进行修改:
方法一:删除有问题的触发器
DROP TRIGGER IF EXISTS gamedata.hmd;
方法二:修改触发器逻辑
把引用jl列的部分替换成表中实际存在的列,或者直接移除这一条件判断。下面给出一个示例:
把引用jl列的部分替换成表中实际存在的列,或者直接移除这一条件判断。下面给出一个示例:
DELIMITER $$ CREATE TRIGGER gamedata.hmd BEFORE UPDATE ON yb_user_data FOR EACH ROW BEGIN -- 假设这里原本想判断的是PTID列的值 IF NEW.PTID = 'special_value' THEN SET NEW.YBNum = 0; END IF; END$$ DELIMITER ;
具体操作步骤
删除触发器(如果该触发器不再需要)
删除触发器(如果该触发器不再需要)
DROP TRIGGER IF EXISTS gamedata.hmd;
修改触发器(要是触发器还有用)
DELIMITER $$ CREATE TRIGGER gamedata.hmd BEFORE UPDATE ON yb_user_data FOR EACH ROW BEGIN -- 保留触发器功能,但使用实际存在的列 IF NEW.YBNum > 1000000 THEN -- 这里用YBNum列作为示例 SET NEW.YBNum = 0; END IF; END$$ DELIMITER ;
验证修改结果
在修改完触发器之后,再次执行之前失败的 SQL 语句:
在修改完触发器之后,再次执行之前失败的 SQL 语句:
UPDATE gamedata.yb_user_data SET PTID = 'ptc86e7bc016108917fc', ChrName = '小仙源码网', YBNum = 9999998, LastModifyYBNumTime = NOW() WHERE UserID = 180001000000012;
总结
问题的根源在于触发器hmd引用了不存在的jl列。你可以选择删除这个触发器,或者对其逻辑进行修改,让它引用表中实际存在的列,这样就能解决错误。
问题的根源在于触发器hmd引用了不存在的jl列。你可以选择删除这个触发器,或者对其逻辑进行修改,让它引用表中实际存在的列,这样就能解决错误。
评论(0)