我刚刚下载了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.c:241: stat(C:...\profile.lua) failed: No error (0)“
注意:如果我在没有lua脚本的情况下运行mysql-proxy,不会出现错误。
我需要安装一些东西来让mysql代理和查询跟踪工作?
我的环境是Windows7专业版x64。
对不起,我的英语不好。
发布于 2011-03-08 04:28:08
您得到的错误是由--proxy-lua-script指向mysql-proxy找不到的文件引起的。要么你输入了错误的名称,要么你输入了错误的路径,或者你在你的CWD中期望它但它不在那里。或者实际上,更仔细地看一下整个错误,似乎mysql-proxy本身可以看到CWD中的文件,但其中一个底层模块不喜欢它(可能是因为mysql-proxy以某种方式更改了CWD?)
尝试将profile.lua保存到C:驱动器的根目录下,并尝试该选项的不同版本,如下所示:
--proxy-lua-script=c:\profile.lua
--proxy-lua-script=\profile.lua
--proxy-lua-script=/profile.lua其中一个可能会行得通
发布于 2011-04-01 17:34:26
简单查询日志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
endhttps://stackoverflow.com/questions/4671777
复制相似问题