相关疑难解决方法(0)

你如何调试MySQL存储过程?

我当前调试存储过程的过程非常简单.我创建了一个名为"debug"的表,我在运行时从存储过程中插入变量值.这允许我在脚本中的给定点看到任何变量的值,但有没有更好的方法来调试MySQL存储过程?

mysql database debugging stored-procedures

116
推荐指数
11
解决办法
16万
查看次数

调试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 ;
Run Code Online (Sandbox Code Playgroud)

以下是一些可能有助于影响建议或答案的其他背景信息.再一次,我对语义/语法不太感兴趣,并且更感兴趣的是看到MySQL运行查询,但无论如何,我现在对任何事情持开放态度.

  • Strace不起作用/显示查询.
  • 非复制环境但是如果bin日志显示触发器语句,我肯定会设置它.
  • "显示完整的进程列表"是否显示触发器执行和/或在其中执行的语句(我在运行show full processlist之后从未看到它们,只要perl可以运行它,但我可能只是错过了它)?
  • 常规查询日志不显示这些查询(当然不是错误日志).
  • 我不再使用别名了.
  • 创建触发器时没有语法错误.
  • IF声明有效.
  • 当我将新值插入"test/temp"表并手动运行更新查询时,它可以工作(我甚至实际上插入了整个更新查询)
  • 我无法向您展示查询,但正如我刚才提到的,如果我有帮助,它会在我手动运行时起作用.
  • 我删除了所有错误的字符,制表符,回车符,换行符等.
  • 我想,MySQL套接字只会显示本地连接/数据,而不会显示MySQL内部工作.
  • MyISAM所以INNODB日志不是一个选项
  • lsof似乎没有显示任何其他有用的东西.
  • 我在CentOS 5.5上使用MySQL 5.0.77.

mysql triggers

14
推荐指数
2
解决办法
2万
查看次数

什么相当于DBMS_OUTPUT的MySQL

我尝试编写一个MySQL strored过程,并希望将一些输出发送到控制台或stdout.Oracle使用DBMS_OUTPUT.PUTLINE来debugginf.

MySQL存储过程中是否存在等效的DBMS_OUTPUT?

mysql oracle dbms-output

5
推荐指数
1
解决办法
2万
查看次数