0

我正在使用 lua 脚本 https://github.com/clofresh/mysql-proxy-cache来缓存选择查询。但是它检测 select 语句的方式存在问题。它使用以下代码

return query:sub(1,6):lower() == 'select'

如果选择查询嵌套在(). 例子:

(SELECT * from tbl_name);

有没有办法在 mysql 代理中删除多余的 () ?

或者有没有更好的方法来检测选择查询?

4

2 回答 2

0

查询实际上在括号内,而不是在字符串内?即使使用插件,它也不应该正确解析。如果它在字符串中,则只需使用:sub(2, 7),但是,如果不是,则将其放在字符串中。创建一个基本上重现该函数的函数,除了将它放在一个字符串中,例如:

function mysqlQuery(mysqlString)
    loadstring(mysqlString)(); 
    return mysqlString;
end
mysqlQuery("SELECT * from tbl");
于 2013-01-01T16:19:41.080 回答
0

我会尝试使用检测常见模式并用等效的规范化 sql 替换它们的字符串库编写规范化脚本。

一个例子是你的父母,但也可以查询零件被移动到哪里可以从中受益。

于 2013-01-01T08:27:00.260 回答