Mój obecny proces debugowania procedur składowanych jest bardzo prosty. Tworzę tabelę o nazwie „debug”, w której w trakcie działania wstawiam wartości zmiennych z procedury składowanej. To pozwala mi zobaczyć wartość dowolnej zmiennej w danym punkcie skryptu, ale czy istnieje lepszy sposób debugowania procedur składowanych MySQL?
mysql
database
debugging
stored-procedures
Cory House
źródło
źródło
Odpowiedzi:
Robię coś bardzo podobnego do ciebie.
Zwykle dołączam parametr DEBUG, który domyślnie ma wartość false i mogę ustawić go na true w czasie wykonywania. Następnie zawiń instrukcje debugowania w blok „If DEBUG”.
Używam również tabeli logowania do wielu moich zadań, aby móc przeglądać procesy i harmonogram. Mój kod debugowania również jest tam wyświetlany. Dołączam nazwę parametru wywołania, krótki opis, liczbę wierszy, na które ma to wpływ (w stosownych przypadkach), pole komentarza i znacznik czasu.
Dobre narzędzia do debugowania to jedna ze smutnych wad wszystkich platform SQL.
źródło
Następującą
debug_msg
procedurę można wywołać, aby po prostu wyprowadzić komunikat debugowania do konsoli:Następnie uruchom test w następujący sposób:
Spowoduje to następujący wynik:
źródło
INSERT INTO my_log_table (message) VALUES (msg)
pobrać wszystkie komunikaty debugowania dopiero po zakończeniu wywołań funkcji (tj. Wrócisz do procedury)Tak, istnieje specjalistyczne narzędzie do tego typu rzeczy - MySQL Debugger .
źródło
Jak debugować procedurę składowaną MySQL.
Debuger dla biednych ludzi:
Utwórz tabelę o nazwie logtable z dwiema kolumnami
id INT
ilog VARCHAR(255)
.Ustaw automatyczne powiększanie kolumny identyfikatora.
Użyj tej procedury:
Umieść ten kod w dowolnym miejscu, w którym chcesz zarejestrować wiadomość w tabeli.
To fajny, szybki i brudny mały rejestrator, aby dowiedzieć się, co się dzieje.
źródło
Istnieją narzędzia GUI do debugowania procedur / funkcji składowanych i skryptów w MySQL. Przyzwoite narzędzie, które dbForge Studio dla MySQL, ma bogatą funkcjonalność i stabilność.
źródło
Debugger dla mysql był dobry, ale nie jest darmowy. Oto, czego teraz używam:
Użycie w procedurze składowanej:
użycie procedury składowanej:
źródło
Przedstawiono tutaj inny sposób
http://gilfster.blogspot.co.at/2006/03/debugging-stored-procedures-in-mysql.html
z niestandardowymi procedurami debugowania mySql i tabelami logowania.
Możesz także po prostu umieścić w kodzie prosty wybór i sprawdzić, czy jest wykonywany.
Wpadłem na ten pomysł
http://forums.mysql.com/read.php?99,78155,78225#msg-78225
Ktoś również stworzył szablon dla niestandardowych procedur debugowania na GitHub.
Spójrz tutaj
http://www.bluegecko.net/mysql/debugging-stored-procedures/ https://github.com/CaptTofu/Stored-procedure-debugging-routines
Wspomniano tutaj
Jak złapać wyjątek w wyzwalaczach i przechowywać procedury dla mysql?
źródło
Po prostu umieszczam instrukcje select w kluczowych obszarach procedury składowanej, aby sprawdzić aktualny stan zestawów danych, a następnie komentuję je (--select ...) lub usuwam je przed produkcją.
źródło
Spóźniłem się na imprezę, ale przyniosłem więcej piwa:
http://ocelot.ca/blog/blog/2015/03/02/the-ocelotgui-debugger/ i https://github.com/ocelot-inc/ocelotgui
Próbowałem i wydaje się całkiem stabilny, obsługując inspekcję punktów przerwania i zmiennej.
Nie jest to kompletny zestaw (tylko 4,1 Mb), ale bardzo mi pomógł!
Jak to działa: integruje się z Twoim klientem mysql (używam Ubuntu 14.04), a po wykonaniu:
Instaluje nową bazę danych na serwerze, która kontroluje proces debugowania. Więc:
da Ci szansę na przejrzenie kodu krok po kroku i „odświeżenie” zmiennych, dzięki czemu będziesz mógł lepiej zobaczyć, co dzieje się w kodzie.
Ważna wskazówka: podczas debugowania może zmienisz (ponownie utwórz procedurę). Po ponownym utworzeniu wykonaj: $ exit i $ setup przed nowym $ debug
Jest to alternatywa dla metod „insert” i „log”. Twój kod pozostaje wolny od dodatkowych instrukcji „debugowania”.
Zrzut ekranu:
źródło
MySQL Connector / Net 6.6 ma funkcję debugowania procedur składowanych i funkcji
źródło
MySql Connector / NET zawiera również debugger procedur składowanych zintegrowany z Visual Studio od wersji 6.6. Instalator i źródło można pobrać tutaj: http://dev.mysql.com/downloads/connector/net/
Część dokumentacji / zrzutów ekranu: https://dev.mysql.com/doc/visual-studio/en/visual-studio-debugger.html
Możesz śledzić ogłoszenia tutaj: http://forums.mysql.com/read.php?38,561817,561817#msg-561817
AKTUALIZACJA: MySql for Visual Studio został podzielony z Connector / NET na osobny produkt, możesz go wybrać (w tym debugger) stąd https://dev.mysql.com/downloads/windows/visualstudio/1.2.html (nadal darmowe i otwarte).
ZRZECZENIE SIĘ: Byłem programistą, który jest autorem mechanizmu debugera procedur składowanych dla produktu MySQL dla programu Visual Studio.
źródło
Pierwszy i stabilny debugger dla MySQL znajduje się w dbForge Studio dla MySQL
źródło
Użyłem dwóch różnych narzędzi do debugowania procedur i funkcji:
źródło
Zmienna zdefiniowana przez użytkownika MySQL (udostępniona w sesji) może być użyta jako dane wyjściowe logowania:
wyświetli:
źródło
Toad mysql. Dostępna jest darmowa wersja http://www.quest.com/toad-for-mysql/
źródło
Odpowiedź odpowiadająca temu autorstwa @Brad Parks Nie jestem pewien co do wersji MySQL, ale moja to 5.6, stąd trochę poprawek:
Utworzyłem funkcję,
debug_msg
która jest funkcją (nie procedurą) i zwraca tekst (bez limitu znaków), a następnie wywołałem funkcję jako SELECTdebug_msg
(params) ASmy_res_set
, kod jak poniżej:źródło