MySQL ialah sistem pengurusan pangkalan data hubungan sumber terbuka yang popular. MySQL membolehkan anda mencipta dan mengurus pangkalan data untuk menyimpan dan mengakses sejumlah besar data. Prosedur tersimpan ialah blok kod yang disimpan dalam pangkalan data yang membolehkan anda melakukan operasi biasa dengan memanggilnya. Apabila membangunkan dan menyahpepijat prosedur tersimpan, anda mungkin menghadapi beberapa masalah dan ralat. Artikel ini akan memperkenalkan cara menyahpepijat prosedur tersimpan MySQL.
Sebelum menyahpepijat prosedur tersimpan, anda perlu mendayakan MySQL Stored Procedure Debugger. Ini boleh dicapai dengan menetapkan parameter berikut dalam fail konfigurasi MySQL:
[mysqld] ... # Enable stored procedure debugging debugger=1
Selepas menetapkan fail, MySQL perlu dimulakan semula untuk perubahan berkuat kuasa.
Dalam MySQL, terdapat dua jenis penyahpepijat utama: satu langkah dan bukan langkah. Penyahpepijatan satu langkah ialah cara paling mudah untuk melaksanakan prosedur tersimpan baris demi baris, menjejaki pelaksanaan setiap pernyataan langkah demi langkah. Penyahpepijatan tanpa langkah ialah kaedah menjalankan titik putus semasa melaksanakan prosedur tersimpan. Kedua-dua penyahpepijat diterangkan secara terperinci di bawah.
Penyahpepijatan langkah tunggal ialah kaedah melaksanakan prosedur tersimpan baris demi baris. Ia membolehkan anda menjeda dan memeriksa kod anda sebelum setiap pernyataan. Anda boleh menggunakan langkah berikut untuk mendayakan dan menggunakan penyahpepijat satu langkah:
Pertama, anda perlu mentakrifkan prosedur tersimpan untuk menunjukkan cara untuk melakukan penyahpepijatan satu langkah. Berikut ialah prosedur tersimpan yang mudah:
DELIMITER $$ CREATE PROCEDURE simple_addition(i INT, j INT) BEGIN DECLARE result INT; SET result = i + j; SELECT result; END$$ DELIMITER ;
Selepas mentakrifkan prosedur yang disimpan, anda perlu mendayakan penyahpepijat satu langkah. Anda boleh menggunakan pernyataan berikut:
SET @@DEBUG=1;
Seterusnya, anda perlu menambah kata kunci "debug" pada pernyataan panggilan prosedur tersimpan untuk memulakan penyahpepijat:
CALL simple_addition(20, 30) debug;
Selepas melaksanakan pernyataan ini, MySQL akan menjeda pelaksanaan dan memindahkan kawalan ke penyahpepijat satu langkah.
Dalam penyahpepijat satu langkah, anda boleh mengawal pelaksanaan kod anda menggunakan arahan berikut:
Berikut ialah contoh menggunakan penyahpepijat satu langkah:
CALL simple_addition(20, 30) debug;
Penyahpepijatan bukan langkah ialah kaedah menjalankan titik putus semasa melaksanakan prosedur tersimpan. Anda boleh menggunakan langkah berikut untuk mendayakan dan menggunakan penyahpepijat bukan satu langkah:
Sekali lagi, anda perlu mentakrifkan prosedur tersimpan dahulu untuk menunjukkan cara untuk nyahpepijat bukan satu langkah. Berikut ialah prosedur tersimpan yang mudah:
DELIMITER $$ CREATE PROCEDURE simple_subtraction(i INT, j INT) BEGIN DECLARE result INT; SET result = i - j; SELECT result; END$$ DELIMITER ;
Penyahpepijat bukan langkah boleh didayakan menggunakan arahan berikut :
CALL simple_subtraction(20, 30) debug_on_break;
Apabila melaksanakan prosedur tersimpan, jika titik putus ditemui, MySQL akan menghentikan pelaksanaan secara automatik.
Setelah penyahpepijat tanpa langkah didayakan, anda boleh menggunakan arahan berikut untuk mengawal pelaksanaan kod anda:
Berikut ialah contoh menggunakan penyahpepijat bukan satu langkah:
CALL simple_subtraction(20, 30) debug_on_break(3);
c;
p result;
b -3;
r;
MySQL menyediakan pelbagai kaedah untuk menyahpepijat prosedur tersimpan, termasuk penyahpepijatan satu langkah dan penyahpepijatan bukan satu langkah. Apabila menggunakan penyahpepijat ini, anda boleh menggunakan pelbagai arahan untuk mengawal pelaksanaan kod anda dan melihat nilai pembolehubah dan ungkapan. Jika anda sedang membangunkan prosedur tersimpan yang kompleks, penyahpepijat ini boleh menjadi alat yang sangat berguna.
Atas ialah kandungan terperinci Bagaimana untuk menyahpepijat prosedur tersimpan MySQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!