在MySQL语句中嵌入注释

在MySQL语句中嵌入注释,mysql,comments,Mysql,Comments,有人知道在MySQL语句中嵌入注释的方法吗?当我搜索mysql和注释时,我只能找到将注释放入表中的方法,等等 如果我按照我老板希望的方式实现,那么我的想法是在语句中预先添加用户id,这样当稍后通过二进制日志分析MySQL时,我们就知道谁做了什么 例如: 选择id 来自客户 handle='JBH'在哪里 现在将显示为: -用户:jwilkie 选择id 来自客户 handle='JBH'在哪里 或类似 为清晰起见进行编辑:这样做的原因是我们有与MySQL接口的perl模块,我们通过读取$ENV{

有人知道在MySQL语句中嵌入注释的方法吗?当我搜索mysql和注释时,我只能找到将注释放入表中的方法,等等

如果我按照我老板希望的方式实现,那么我的想法是在语句中预先添加用户id,这样当稍后通过二进制日志分析MySQL时,我们就知道谁做了什么

例如: 选择id 来自客户 handle='JBH'在哪里 现在将显示为: -用户:jwilkie 选择id 来自客户 handle='JBH'在哪里

或类似

为清晰起见进行编辑:这样做的原因是我们有与MySQL接口的perl模块,我们通过读取$ENV{user}来检索用户id,在本例中是jwilkie。在这种情况下,我们有一个MySQL用户定义,但有多个人运行perl mod


有人有这方面的经验吗?非常感谢!Jane

如果您可以控制正在生成的SQL查询,那么您应该能够在查询生成器中以编程方式将注释嵌入其中

Select查询不会进入二进制日志,但注释可能会进入慢速查询日志、常规查询日志等

这里有一篇来自Percona的博文稍微涉及了这个主题,特别是在mk query digest的上下文中。这可能有助于:


如果您可以控制正在生成的SQL查询,那么您应该能够在查询生成器中以编程方式将注释嵌入其中

Select查询不会进入二进制日志,但注释可能会进入慢速查询日志、常规查询日志等

这里有一篇来自Percona的博文稍微涉及了这个主题,特别是在mk query digest的上下文中。这可能有助于:


通常,在将SQL语句记录到二进制日志中之前,会先删除注释。然而,一个棘手的解决办法是假装ypur注释包含MySQL未来版本的语法-例如9.99.99:

/*!99999 user:jwilkie */ insert into tbl values (yyy);

这些注释随后将被传递到二进制日志中。

通常,在SQL语句记录到二进制日志中之前,注释会被剥离。然而,一个棘手的解决办法是假装ypur注释包含MySQL未来版本的语法-例如9.99.99:

/*!99999 user:jwilkie */ insert into tbl values (yyy);

然后,这些注释将被传递到二进制日志中。

您必须使用一个名为jwilkie的帐户,并通过探查器之类的工具查看会话,才能看到类似的信息。显然,它被多个使用同一帐户的人打败了——这就是数据库必须知道谁在运行什么。如果使用Windows身份验证,SQL Server可能会提供更多详细信息…@OMG Ponies:谢谢。我突然意识到我的问题不够清楚,于是编辑了这个问题。不过,这主要还是关于我如何在MySQL语句中嵌入注释的问题。你必须使用一个名为jwilkie的帐户,并通过类似Profiler的工具观看会话,才能看到类似的信息。显然,它被多个使用同一帐户的人打败了——这就是数据库必须知道谁在运行什么。如果使用Windows身份验证,SQL Server可能会提供更多详细信息…@OMG Ponies:谢谢。我突然意识到我的问题不够清楚,于是编辑了这个问题。这主要还是关于我如何在MySQL语句中嵌入注释的问题。呃,如何在常规查询日志中获取注释?我从未在那里见过他们,出于某种原因,我找不到合适的背景?@Wrikken:看看马丁的答案。这显示了一个注释语法,可以将其添加到二进制日志中。谢谢,这似乎是一个难题,但很高兴知道。呃,如何在常规查询日志中获取注释?我从未在那里见过他们,出于某种原因,我找不到合适的背景?@Wrikken:看看马丁的答案。这显示了一个注释语法,它将进入二进制日志。谢谢,似乎是一个难题,但很高兴知道。这就是我需要的马丁谢谢!我们能做到这一点的唯一方法是将慢速查询日志上的阈值降至0,而这不会发生!你也帮我省了一些工作!谢谢!!!!珍妮!那脏得足以让人满意,干净得足以让人拥抱。这就是我需要的马丁谢谢!我们能做到这一点的唯一方法是将慢速查询日志上的阈值降至0,而这不会发生!你也帮我省了一些工作!谢谢!!!!珍妮!这是肮脏到足以满足,但干净到足以拥抱。