首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在mysql-proxy上使用Lua脚本记录SQL错误和警告

如何在mysql-proxy上使用Lua脚本记录SQL错误和警告
EN

Stack Overflow用户
提问于 2013-07-02 08:41:51
回答 2查看 1.3K关注 0票数 0

出于调试目的,我希望在服务器级别记录MySQL返回的SQL错误和警告消息,以及相应的查询。

我发现了两个有用的Lua脚本:

https://github.com/koopa/mysql-proxy-log-error-queries/blob/master/mysql-proxy-log-error-queries.lua https://github.com/patrickallaert/MySQL-Proxy-scripts-for-devs (debug.lua)

允许使用MySQL代理记录错误。但我仍在寻找一种记录警告的方法。我对mysql-proxy LUA-scripting没有信心。有人能告诉我怎么做吗?

这个问题:Log warnings into a table似乎很接近,但不幸的是,提供的链接是死的,我找不到内容。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-04 18:13:29

我最终在学习文学的过程中研究了这个主题,并开发了适合我的Lua脚本。

我首先提到的脚本(https://github.com/koopa/mysql-proxy-log-error-queries/blob/master/mysql-proxy-log-error-queries.lua)是一个很好的起点,但是:

  • 它只记录错误而不记录警告。最初,它管理一个“error flag”,如果客户端的查询返回错误,则将其设置为true。我改变了这一点,以便记录SHOW WARNINGS返回某些内容(错误、警告或注释)的每个查询。
  • 它将错误日志行插入到表中。这可能很好,但对客户端来说可能会相当混乱,因为插入日志行将清除“show warnings”查询显示的消息。可能有一种方法可以解决这个问题,打开一个新的会话或连接...但我选择将事件记录到一个简单的文本文件中。其次,原始脚本中的插入查询可能会生成语法错误,因为错误消息或原始查询中可能包含简单的引号'

在记录所有警告时,有一点我们必须小心:所有查询都不会清除警告/注释队列。因此,SHOW WARNINGS可以在不生成警告的查询之后返回由前一个查询生成的结果集。为了解决这个问题,我使用了一个脏方法:在检测到一个查询之后,我注入了一个错误的查询,我知道它会为它生成一个错误消息;然后我会忽略这个错误消息。这是一种“清除”警告和注释的方法。

票数 2
EN

Stack Overflow用户

发布于 2013-07-02 20:53:36

您可以下载此脚本并在配置MySQL-proxy时指定。此处列出了命令行选项:MySQL-proxy-configuration

典型的MySQL代理配置在您的示例中如下所示:

代理$mysql-代理--代理后端地址=192.168.x.x:3305--代理地址=192.168.y.y:4045 --proxy-lua-script=mysql-proxy-log-error-queries.lua

我猜您可能需要修改此脚本才能连接到MySQL-proxy。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17415727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档