Proses saya saat ini untuk men-debug prosedur tersimpan sangat sederhana. Saya membuat tabel yang disebut "debug" di mana saya memasukkan nilai variabel dari prosedur tersimpan saat dijalankan. Ini memungkinkan saya untuk melihat nilai variabel apa pun pada titik tertentu dalam skrip, tetapi adakah cara yang lebih baik untuk men-debug prosedur tersimpan MySQL?
mysql
database
debugging
stored-procedures
Cory House
sumber
sumber
Jawaban:
Saya melakukan sesuatu yang sangat mirip dengan Anda.
Saya biasanya akan menyertakan parameter DEBUG yang secara default disetel ke false dan dapat disetel ke true pada waktu proses. Kemudian bungkus pernyataan debug ke dalam blok "If DEBUG".
Saya juga menggunakan tabel pencatatan dengan banyak pekerjaan saya sehingga saya dapat meninjau proses dan waktu. Kode Debug saya mendapatkan output di sana juga. Saya menyertakan nama param panggilan, deskripsi singkat, jumlah baris yang terpengaruh (jika sesuai), bidang komentar dan cap waktu.
Alat debugging yang baik adalah salah satu kegagalan menyedihkan dari semua platform SQL.
sumber
debug_msg
Prosedur berikut dapat dipanggil untuk hanya mengeluarkan pesan debug ke konsol:Kemudian jalankan tes seperti ini:
Ini akan menghasilkan output berikut:
sumber
INSERT INTO my_log_table (message) VALUES (msg)
dan mungkin mengambil semua pesan debug setelah panggilan fungsi selesai (yaitu: Anda kembali ke prosedur)Ya, ada alat khusus untuk hal semacam ini - MySQL Debugger .
sumber
Cara men-debug prosedur tersimpan MySQL.
Debugger orang miskin:
Buat tabel bernama logtable dengan dua kolom,
id INT
danlog VARCHAR(255)
.Buat autoincrement kolom id.
Gunakan prosedur ini:
Letakkan kode ini di mana pun Anda ingin memasukkan pesan ke tabel.
Ini adalah logger kecil yang cepat dan kotor untuk mencari tahu apa yang sedang terjadi.
sumber
Ada alat GUI untuk men-debug prosedur / fungsi yang tersimpan dan skrip di MySQL. Alat yang layak dbForge Studio for MySQL, memiliki fungsionalitas dan stabilitas yang kaya.
sumber
Debugger untuk mysql bagus tapi tidak gratis. Inilah yang saya gunakan sekarang:
Penggunaan dalam prosedur tersimpan:
penggunaan prosedur tersimpan:
sumber
Cara lain disajikan di sini
http://gilfster.blogspot.co.at/2006/03/debugging-stored-procedures-in-mysql.html
dengan prosedur custom debug mySql dan tabel logging.
Anda juga dapat menempatkan pemilihan sederhana dalam kode Anda dan melihat apakah itu dijalankan.
Saya mendapat ide ini dari
http://forums.mysql.com/read.php?99,78155,78225#msg-78225
Juga seseorang membuat template untuk prosedur debug kustom di GitHub.
Lihat disini
http://www.bluegecko.net/mysql/debugging-stored-procedures/ https://github.com/CaptTofu/Stored-procedure-debugging-routines
Disebutkan di sini
Bagaimana cara menangkap pengecualian dalam pemicu dan prosedur penyimpanan untuk mysql?
sumber
Saya hanya menempatkan pernyataan pilih di area utama dari prosedur tersimpan untuk memeriksa status kumpulan data saat ini, dan kemudian mengomentarinya (--select ...) atau menghapusnya sebelum produksi.
sumber
Saya terlambat ke pesta, tetapi membawa lebih banyak bir:
http://ocelot.ca/blog/blog/2015/03/02/the-ocelotgui-debugger/ dan https://github.com/ocelot-inc/ocelotgui
Saya mencoba, dan tampaknya cukup stabil, mendukung Breakpoints dan inspeksi Variabel.
Ini bukan suite yang lengkap (hanya 4,1 Mb) tetapi sangat membantu saya!
Cara kerjanya: Terintegrasi dengan klien mysql Anda (saya menggunakan Ubuntu 14.04), dan setelah Anda mengeksekusi:
Ini menginstal database baru di server Anda, yang mengontrol proses debugging. Begitu:
akan memberi Anda kesempatan untuk menjalankan kode Anda langkah demi langkah, dan "menyegarkan" variabel Anda, Anda dapat melihat dengan lebih baik apa yang terjadi di dalam kode Anda.
Tip Penting: saat debugging, mungkin Anda akan berubah (membuat ulang prosedur). Setelah membuat ulang, jalankan: $ exit dan $ setup sebelum $ debug baru
Ini adalah alternatif untuk metode "menyisipkan" dan "log". Kode Anda tetap bebas dari instruksi "debug" tambahan.
Tangkapan layar:
sumber
Konektor MySQL / Net 6.6 memiliki fitur untuk Debug Stored Procedures and Functions
sumber
MySql Connector / NET juga menyertakan prosedur debugger tersimpan yang terintegrasi dalam studio visual mulai versi 6.6, Anda bisa mendapatkan penginstal dan sumbernya di sini: http://dev.mysql.com/downloads/connector/net/
Beberapa dokumentasi / tangkapan layar: https://dev.mysql.com/doc/visual-studio/en/visual-studio-debugger.html
Anda dapat mengikuti pengumuman di sini: http://forums.mysql.com/read.php?38,561817,561817#msg-561817
UPDATE: MySql untuk Visual Studio dipisahkan dari Connector / NET menjadi produk terpisah, Anda dapat memilihnya (termasuk debugger) dari sini https://dev.mysql.com/downloads/windows/visualstudio/1.2.html (masih gratis & open source).
PENAFIAN: Saya adalah pengembang yang menulis mesin debugger prosedur tersimpan untuk produk MySQL untuk Visual Studio.
sumber
Debugger pertama dan stabil untuk MySQL ada di dbForge Studio untuk MySQL
sumber
Saya telah menggunakan dua alat berbeda untuk men-debug prosedur dan fungsi:
sumber
Variabel yang ditentukan pengguna MySQL (dibagi dalam sesi) dapat digunakan sebagai keluaran logging:
akan mengeluarkan:
sumber
Toad mysql. Ada versi freeware http://www.quest.com/toad-for-mysql/
sumber
Jawaban yang sesuai dengan ini oleh @Brad Parks Tidak yakin tentang versi MySQL, tetapi milik saya adalah 5.6, maka sedikit pekerjaan tweaker:
Saya membuat fungsi
debug_msg
yang berfungsi (bukan prosedur) dan mengembalikan teks (tanpa batas karakter) dan kemudian memanggil fungsi tersebut sebagai SELECTdebug_msg
(params) ASmy_res_set
, kode seperti di bawah ini:sumber