Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用MySql代理跟踪MySql查询?_Mysql_Lua_Mysql Proxy - Fatal编程技术网

如何使用MySql代理跟踪MySql查询?

如何使用MySql代理跟踪MySql查询?,mysql,lua,mysql-proxy,Mysql,Lua,Mysql Proxy,我刚刚下载了mysql代理并创建了这个脚本lua(可以在mysql文档中找到): 这是我正在使用的命令行: mysql-proxy -P localhost:1234 -b localhost:3306 --proxy-lua-script=profile.lua --plugins=proxy 当我运行一个简单查询(如“从表1中选择*)时,会报告此错误:“失败:。\lua scope.c:241:stat(c:…\profile.lua)失败:无错误(0)” 注意:如果我在没有lua脚本的情

我刚刚下载了mysql代理并创建了这个脚本lua(可以在mysql文档中找到):

这是我正在使用的命令行:

mysql-proxy -P localhost:1234 -b localhost:3306 --proxy-lua-script=profile.lua --plugins=proxy
当我运行一个简单查询(如“从表1中选择*)时,会报告此错误:“失败:。\lua scope.c:241:stat(c:…\profile.lua)失败:无错误(0)”

注意:如果我在没有lua脚本的情况下运行mysql代理,则不会发生错误

我需要安装一些东西来让mysql代理和查询跟踪工作

我的环境是Windows7 Professional x64


抱歉,英语不好。

您收到的错误是由--proxy lua脚本导致的,该脚本指向mysql proxy找不到的文件。要么您键入了错误的名称,要么您键入了错误的路径,要么您希望它出现在CWD中,但它不在那里。或者实际上,更仔细地看一下整个错误,似乎mysql代理本身可以在CWD中看到该文件,但其中一个底层模块不喜欢它(可能是因为mysql代理以某种方式更改了CWD?)

尝试将profile.lua保存到C:驱动器的根目录,并尝试使用不同版本的选项,如:

--proxy-lua-script=c:\profile.lua
--proxy-lua-script=\profile.lua
--proxy-lua-script=/profile.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
这很有效--代理lua script=c:\profile.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