我目前正在运行MySQL ver 5.5.27。
我有一个脚本可以创建各种INSERT,UPDATE和DELETE触发器。该脚本以下列方式使用drop trigger函数:
DROP TRIGGER IF EXISTS trig_Groups_afterUPDATE;
接下来是创建触发器..
这个脚本大部分时间都可以工作,但没有明显的理由它似乎停止工作并抛出错误:
MySQL Error: (1360) Trigger does not exist
现在原因似乎是因为触发器已从MySQL中删除(通过运行以下命令确认:
select TRIGGER_NAME from INFORMATION_SCHEMA.TRIGGERS;
这并没有显示有问题的触发器)但相应的trn和trg文件仍然存在。每当我通过在MySQL中使用正确相应的trg和trn文件确定存在的触发器上手动运行命令进行测试。该命令成功执行,trg和trn文件也被删除(如您所料)。
我不认为这是一个编码问题,而是更多的环境问题,因此它在大多数情况下工作,更糟糕的是它似乎一直在其他机器上运行。
任何人都可以提供任何建议。我的第一个想法是它似乎是某种文件锁定问题。似乎64位机器更频繁地出现这个问题所以也许这与它有关...
感谢。如果问题是含糊不清,我很抱歉,如果需要,我很乐意生成更多代码。
注意**
手动删除trn文件以获取MySQL在尝试删除时抱怨的触发器,并重新运行该脚本可以解决问题。因此,从先前的drop trigger命令中删除trn文件,成功删除了触发器而不是trn文件,这似乎是一个问题。