2011-01-12 3 views
5

मैं सिर्फ mysql-प्रॉक्सी डाउनलोड किया है और इस स्क्रिप्ट lua (Mysql डॉक्स में पाया जाता है) बनाया:MySQL-Proxy का उपयोग करके MySQL प्रश्नों का पता कैसे लगाएं?

function read_query(packet) 
    if string.byte(packet) == proxy.COM_QUERY then 
    print("QUERY: " .. string.sub(packet, 2)) 
    end 
end 

यह आदेश-पंक्ति मैं उपयोग कर रहा हूँ है:

mysql-proxy -P localhost:1234 -b localhost:3306 --proxy-lua-script=profile.lua --plugins=proxy 

जब मैं एक चलाने सरल क्वेरी (जैसे "table1 से चुनें *"), यह त्रुटि रिपोर्ट की गई है: "असफल:। \ lua-scope.c: 241: stat (c: ... \ profile.lua) विफल: कोई त्रुटि नहीं (0)"

नोट: यदि मैं lua स्क्रिप्ट के बिना mysql-proxy चलाता हूं, तो कोई त्रुटि नहीं होती है।

मुझे mysql-proxy और क्वेरी ट्रेसिंग काम करने के लिए कुछ स्थापित करने की आवश्यकता है?

मेरा पर्यावरण विंडोज 7 व्यावसायिक x64 है।

खराब अंग्रेजी क्षमा करें।

उत्तर

7

जो त्रुटि आप प्राप्त कर रहे हैं वह है --proxy-lua-script एक फ़ाइल को इंगित करता है जो mysql-proxy नहीं मिल सकता है। या तो आपने गलत नाम टाइप किया है, आपने गलत तरीके से पथ टाइप किया है, या आप इसे अपने सीडब्ल्यूडी में उम्मीद कर रहे हैं और यह वहां नहीं है। या वास्तव में, पूरी त्रुटि को थोड़ा अधिक बारीकी से देखते हुए, ऐसा लगता है कि mysql-proxy स्वयं फ़ाइल को सीडब्ल्यूडी में ठीक से देखता है, लेकिन अंतर्निहित मॉड्यूल में से कोई इसे पसंद नहीं करता है (संभवतः क्योंकि mysql-proxy किसी भी तरह से CWD को बदलता है ?)

अपने सी की जड़ तक profile.lua सहेजने का प्रयास करें: तो की तरह ड्राइव और कोशिश कर विकल्प के विभिन्न संस्करणों:

--proxy-lua-script=c:\profile.lua 
--proxy-lua-script=\profile.lua 
--proxy-lua-script=/profile.lua 

उन में से एक शायद

+0

यह काम करता है! _-- प्रॉक्सी-लुआ-स्क्रिप्ट = सी: \ profile.lua_ ** धन्यवाद! ** – Maico

2

सरल क्वेरी लॉग 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