问题描述
我喜欢触发器有一个原因 - 它们只是有效.我讨厌触发器有一个原因——当它们不起作用时,忘记尝试调试.哦甜蜜的挫折.
I love triggers for one reason - they just work. I hate triggers for one reason - when they don't work, forget about trying to debug. O the sweet frustration.
基本上,我想查看运行的更新、删除、插入等查询.我想在我的终端或日志中的某个地方看到该查询,确切地了解 MySQL 执行它的方式和时间,以及可能的任何相应的输出/错误.想法/技巧?
Basically, I want to see THE update, delete, insert, etc query that was ran. I want to see that query ... somewhere, in my terminal or a log, exactly how and when MySQL executes it, and possibly any corresponding output/errors. Thoughts/hacks?
我正在尝试使用一些连接来调试更新查询,但没有.我的查询要复杂得多,但为简洁起见,这里有一个示例.
I'm trying to debug an update query with a few joins and what not. My queries are much more complex but for brevity here's an example.
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 运行查询,但无论如何,我现在对任何事情都持开放态度.
Here is some additional context that may help influence a suggestion or answer. Again, I'm less interested in semantics/syntax and more interested in seeing MySQL run the query but by all means, I'm open to anything at this point.
- Strace 不起作用/显示查询.
- 非复制环境但如果 bin 日志显示触发语句,我肯定会设置它.
- show full processlist"是否显示触发器执行和/或在其中执行的语句(在运行 show full processlist 后我再也看不到它们,因为 perl 可以运行它,但我可能只是错过了它)?
- 一般查询日志不显示这些查询(当然不是错误日志).
- 我不再使用别名了.
- 创建触发器时没有语法错误.
- IF 语句有效.
- 当我将新值插入测试/临时"表并手动运行更新查询时,它可以工作(我什至实际上插入了整个更新查询)
- 我无法向您展示查询,但正如我刚才提到的,如果有帮助的话,当我手动运行时它会起作用.
- 我已删除所有错误的字符、制表符、回车符、换行符等.
- 我认为 MySQL 套接字只会显示本地连接/数据,而不会显示 MySQL 内部工作.
- MyISAM 所以 INNODB 日志不是一个选项
- lsof 似乎没有显示任何其他有用的东西.
- 我在 CentOS 5.5 上使用 MySQL 5.0.77.
推荐答案
您可以 调试触发器 使用 dbForge Studio for MySQL.试用试用版.
You can debug triggers using dbForge Studio for MySQL. Try trial version.
文档中有对触发器调试过程的详细描述:调试调试存储例程如何:启动触发器调试.
There is a detailed description of the trigger debugging process in the documentation: Debugging Debugging Stored Routines How To: Start Trigger Debugging.
这篇关于调试 MySQL 触发器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!