如何使用MySql-Proxy跟踪MySql查询?
2011-1-13 16:52:14
收藏:0
阅读:126
评论:2
我刚刚下载了 mysql-proxy 并创建了这个 lua 脚本(在 MySQL 文档中发现):
function read_query(packet)
if string.byte(packet) == proxy.COM_QUERY then
print("QUERY: " .. string.sub(packet, 2))
end
end
这是我正在使用的命令行:
mysql-proxy -P localhost:1234 -b localhost:3306 --proxy-lua-script=profile.lua --plugins=proxy
当我运行一个简单的查询(如 "select * from table1")时,会报告这个错误:"failed: .\lua-scope.c:241: stat(C:...\profile.lua) failed: No error (0)"
注意:如果我在没有 lua 脚本的情况下运行 mysql-proxy,则不会出现错误。
我需要安装什么才能让 mysql-proxy 和查询跟踪工作?
我的环境是 Windows 7 Professional x64。
抱歉我的糟糕英语。
原文链接 https://stackoverflow.com/questions/4671777
点赞
stackoverflow用户537673
简单的查询日志lua脚本:
```lua
require("mysql.tokenizer")
local fh = io.open("/var/log/mysql/proxy.query.log", "a+")
fh:setvbuf('line',4096)
local the_query = "";
local seqno = 0;
function read_query( packet )
if string.byte(packet) == proxy.COM_QUERY then
seqno = seqno + 1
the_query = (string.gsub(string.gsub(string.sub(packet, 2), "%s%s*", ' '), "^%s*(.-)%s*$", "%1"))
fh:write(string.format("%s %09d %09d : %s (%s) -- %s\n",
os.date('%Y-%m-%d %H:%M:%S'),
proxy.connection.server.thread_id,
seqno,
proxy.connection.client.username,
proxy.connection.client.default_db,
the_query))
fh:flush()
return proxy.PROXY_SEND_QUERY
else
query = ""
end
end
```
2011-04-01 09:34:26
评论区的留言会收到邮件通知哦~
推荐文章
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
- 如何编写 Lua 模式将字符串(嵌套数组)转换为真正的数组?
你收到的错误是由于 --proxy-lua-script 指向 mysql-proxy 无法找到的文件所造成的。 可能是你输入了错误的文件名或路径,或者你期望它在当前工作目录中但实际上它不在那里。 或者,实际上,更仔细地查看整个错误,似乎可能是 mysql-proxy 本身在当前工作目录中看到了该文件,但是其中一个基础模块不喜欢它(可能是因为 mysql-proxy 以某种方式改变了当前工作目录?)
尝试将 profile.lua 保存到 C:驱动器的根目录中,并尝试使用不同版本的选项,例如:
--proxy-lua-script=c:\profile.lua --proxy-lua-script=\profile.lua --proxy-lua-script=/profile.lua
其中一个可能会起作用。