2010-11-04 67 views
1

有谁知道在MySQL语句中嵌入注释的方法吗?当我搜索mysql和评论时,我只能得到表格中的注释等。在MySQL语句中嵌入注释

这个想法,如果我按老板想要的方式实现这一点,那么显然要在用户标识前加上这个语句,这样当MySQL稍后分析(通过二进制日志),我们知道谁做了什么。

例子:
SELECT ID
从客户
WHERE手柄= 'JBH'

现在会显示为:
- 用户:jwilkie
SELECT ID
从客户
WHERE处理='JBH'

(或相似)

编辑澄清:原因是我们有perl模块与MySQL接口,我们通过阅读$ ENV {USER}(在本例中为“jwilkie”)来检索用户标识。这是一种情况,我们有一个MySQL用户定义,但有多人运行perl mod。

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

+0

您必须使用名为“jwilkie”的帐户,并通过类似Profiler的事情来观看会话才能看到类似的信息。显然,它被多个人使用同一个账户所击败 - 这就是所有的数据库必须知道谁在运行什么。 SQL Server可能会给你更多的细节,如果使用说Windows认证... – 2010-11-04 19:33:00

+0

@OMG小马:谢谢你。我想到我的问题还不够清楚,我编辑了这个问题。这主要还是一个关于如何在MySQL声明中嵌入注释的问题。 – 2010-11-04 19:40:02

回答

5

通常情况下,SQL语句被记录在二进制日志之前的评论被剥离。然而,一个令人讨厌的解决方法是假装ypur注释包含某些未来版本的MySQL的语法 - 例如。 9.99.99:

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

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

+0

这就是我需要马丁感谢!我们唯一能做到这一点的方法是将慢速查询日志的阈值降到0,这种情况没有发生!你还救了我一些工作!谢谢谢谢谢谢!珍妮! – 2010-11-04 20:20:55

+0

这是足够肮脏的满足,但足够干净,足以拥抱。 – Sharky 2013-03-04 21:43:23

1

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

选择查询不二进制日志中去,但注释可能使其进入慢查询日志,一般查询日志等

下面是Percona的博客文章是关于这个问题有点触动,特别是在mk-query-digest的情况下。这可能有助于:

http://www.mysqlperformanceblog.com/2010/07/05/mk-query-digest-query-comments-and-the-query-cache/

+0

呃,你如何在'general_query_log'中得到评论?我从来没有见过他们,出于某种原因,我找不到它的设置? – Wrikken 2010-11-04 19:59:56

+0

@Wrikken:看看Martin的回答。这显示了一条评论语法,它将使其成为二进制日志。 – 2010-11-04 20:06:38

+0

谢谢,似乎是一个混乱,但很高兴知道。 – Wrikken 2010-11-04 20:08:16