我喜欢触发器的原因之一 - 他们只是工作。我讨厌触发器有一个原因 - 当它们不工作时,忘记尝试调试。哦,甜蜜的沮丧。调试MySQL触发器
基本上,我想看到更新,删除,插入等运行的查询。我想看看那个查询...在某处,在我的终端或日志中,确切地说MySQL如何以及何时执行它,以及可能的任何相应的输出/错误。思考/黑客?
我试图调试一个更新查询与几个联接和什么不是。我的查询要复杂得多,但为了简洁,这里是一个例子。
DELIMITER |
CREATE TRIGGER ireallyhateyourightnow AFTER UPDATE ON watch_this_table
FOR EACH ROW BEGIN
IF (OLD.my_value != NEW.my_value) THEN
update
my_table
set
my_column = NEW.my_value;
END IF;
END|
DELIMITER ;
以下是一些可能有助于影响建议或答案的附加上下文。再一次,我对语义/语法不太感兴趣,并且更感兴趣的是看到MySQL运行查询,但无论如何,我现在对任何事情都是开放的。
- Strace不工作/显示查询。
- 非复制环境但是如果bin日志显示触发器语句,我一定会设置它。
- “显示完整进程列表”显示触发器执行和/或内部执行的语句(在运行完整的进程列表之后,我从来没有看到它们像perl可以运行一样快,但我可能会错过它)?
- 一般查询日志不显示这些查询(当然不是错误日志)。
- 我没有使用别名(了)。
- 创建触发器时无语法错误。
- IF语句有效。
- 当我将新值变成了“测试/ TEMP”表,并手动运行更新查询它的工作原理(我甚至竟以实际插入整个更新查询)
- 我无法显示你的查询,但正如我刚才提到的,它工作时我手动运行,如果有帮助。
- 我已经删除了所有错误的字符,制表符,回车符,换行符等。
- 我认为MySQL套接字只会显示本地连接/数据而不是MySQL内部工作。
- MyISAM so INNODB日志不是一个选项
- lsof似乎没有显示任何其他的使用。
- 我在CentOS 5.5上使用MySQL 5.0.77。
肯定,步入变灰。大概是因为这是一个试验? – Justin
'Step Into'命令必须在存储过程代码中处于活动状态。你是否遵循了一步一步的指令(如何:启动触发器调试)? – Devart
谢谢Devart!非常好的一块软件。 – Justin