V jednom z projektov používame v databázovej vrstve MyBatis (niekdajší Apache iBatis). SQL dopyty lietajú hore dole, ale takmer každý z nich je dynamický: použitie PreparedStatement
ov je temer štandardnom a neraz sa konkrétny dopyt vyskladá „za jazdy” z viacerých častí. Ako sa dá zistiť konkrétny vyskladaný dopyt, ktorý dostala databáza?
MyBatis vás napríklad obveselí logovacou hláškou (teraz vynechávam stotisíc inicializačných vecí)
22:29:30.855 [main] DEBUG java.sql.PreparedStatement - ==> Executing: UPDATE resource SET `load` = ? WHERE id = ?
22:29:30.855 [main] DEBUG java.sql.PreparedStatement - ==> Parameters: 56.65(Float), 16(Long)
„Pozorný čitateľ” si ľahko domyslí, že v skutočnosti sa poslal:
UPDATE resource SET `load` = 56.65 WHERE id = 16
Ak musíte ladiť komplikovaný dopyt, rozhodne vás prejde chuť si to vyskladávať ručne niekde v separátnom textovom editore.
Množstvo vývojárov sa utieka k proxy JDBC ovládaču P6Spy, ale na to dnes nie je čas.
Ak však máte MySQL, je to veľmi jednoduché.
Konfigurácia na Windowse editovaním
Toto je príklad situácie, kde konzoláci-textoví editovači vyhrávajú nad klikačmi
Na Windowse stačí vyhrabať konfigurák: pri štandardnej inštalácii sa nachádza v
C:\Program Files\MySQL\MySQL Server 5.5\my.ini
a dodať direktívy
general-log
general_log_file = c:\var\log\mysql\localhost_query.log
Prvá direktíva nemá žiadne parametre: ňou zapneme logovanie dopytov. Druhá direktíva udáva cestu k súboru, do ktorého sa budú pchať logy.
log=c:\var\log\mysql\localhost_query.log
. Odporúča sa však použiť uvedený novší formát: ten má viacero možností,
o ktorých je viac v dokumentácii.
Súbor uložíme, reštartneme službu:
net stop mysql
net start mysql
a obdivujeme zalogované dopyty:
9 Query UPDATE resource_d
SET `load` = 56.65,
WHERE id = 16
Samozrejme, dopytov je veľa a treba sa v nich pohrabať.
Konfigurácia na Windowse klikaním
- Ak máte MySQL Workbench, tak sa stačí pripojiť k Server Administration (v štartovacej obrazovke ten najpravejší panel).
- V strome nájsť sekciu Configuration a Options File
- Na karte Log Files zakliknite general-log a o niečo nižšie vyplňte/nabrowsujte k general_log_file. Aplikujte zmeny, poobdivujte zoznam úprav.
- Reštartnite MySQL: tlačidlo Štart, spustiť
services.msc
, nájsť službu MySQL a reštartnúť.