2010-11-04 68 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