sql >> Database teknologi >  >> RDS >> Mysql

Fejlretning af MySQL-triggere

Der er en alternativ måde at teste det på ved at have en midlertidig debug bord . I eksemplet her opretter de det i en egen debug database.

Trin 1: Opret en tabel

DROP TABLE IF EXISTS debug;
CREATE TABLE debug (
  proc_id varchar(100) default NULL,
  debug_output text,
  line_id int(11) NOT NULL auto_increment,
  PRIMARY KEY  (line_id)
)
 

Trin 2: Opret debug SP'er for at udfylde fejlfindingstabellen

DELIMITER $$

DROP PROCEDURE IF EXISTS `debug_insert` $$
CREATE PROCEDURE `debug_insert`(in p_proc_id varchar(100),in p_debug_info text)
begin
  insert into debug (proc_id,debug_output)
  values (p_proc_id,p_debug_info);
end $$

DROP PROCEDURE IF EXISTS `debug_on` $$
CREATE PROCEDURE `debug_on`(in p_proc_id varchar(100))
begin
  call debug_insert(p_proc_id,concat('Debug Started :',now()));
end $$

DROP PROCEDURE IF EXISTS `debug_off` $$
CREATE PROCEDURE `debug_off`(in p_proc_id varchar(100))
begin
  call debug_insert(p_proc_id,concat('Debug Ended :',now()));
  select debug_output from debug where proc_id = p_proc_id order by line_id;
  delete from debug where proc_id = p_proc_id;
end $$
 

Trin 3: Kald debug-SP'erne i din trigger

Sådan,

CREATE PROCEDURE test_debug()
begin
declare l_proc_id varchar(100) default 'test_debug';
  call debug_on(l_proc_id);
  call debug_insert(l_proc_id,'Testing Debug');
  call debug_off(l_proc_id);
end $$
 

Som et resultat ville fejlfindingstabellen blive udfyldt som følger,

+------------------------------------+ | debug_output | +------------------------------------+ | Debug Started :2006-03-24 16:10:33 | | Testing Debug | | Debug Ended :2006-03-24 16:10:33 | +------------------------------------+

  1. Opbygning af en meget tilgængelig database til Moodle ved hjælp af MySQL-replikering

  2. @@FEJL og/eller PRØV - FANG

  3. gemme arabisk i SQL-database

  4. Tabel kan ikke oprettes i mysql -Error 1064