hawkmaster1: phpmyadmin export und Import mit Trigger, Fehler 1303

Hallo zusammen, ich hatte heute Problem beim Import einer DB die drei Trigger hat. Ich hatte zuerst mit Phpmyadmin die DB als SQL File exportiert. Dann habe ich eine neue leere DB angelegt und wollte diese SQL Datei importieren.

Beim Import kam dann dieser Fehler:

MySQL meldet: Dokumentation #1303 - Can't create a TRIGGER from within another stored routine

Mache ich was falsch beim Export oder müsste man den Export mit Phpmyadmin OHNE Trigger machen?

So sieht der exportierte Trigger in der SQL Datei aus:

--
-- Trigger `my_action`
--
DELIMITER $$
CREATE TRIGGER `delete_actionhistory` BEFORE DELETE ON `my_action`
 FOR EACH ROW BEGIN

	DECLARE x INT;
	SET x = (SELECT max(revision) FROM my_actionhistory WHERE actionid = OLD.actionid) +1; 
			
	IF(x IS NULL) THEN
        SET x = 1;
    END IF;
	
    INSERT INTO my_actionhistory (`actionid`, `opportunitynumber`, `active`, `actionhours`, `actionstatus`, `actiondescription`, `actiondate`, `userid`, `actionmail`, `actionmaildays`, `actionmailsent`, `mergeoppnr`, `changetimestamp`, `changetype`, `revision`)
    VALUES
    (OLD.actionid,OLD.opportunitynumber,OLD.active,OLD.actionhours ,OLD.actionstatus ,OLD.actiondescription ,OLD.actiondate ,OLD.userid ,OLD.actionmail ,OLD.actionmaildays ,OLD.actionmailsent ,OLD.mergeoppnr ,NOW() ,'delete',x);
    END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `insert_actionhistory` AFTER INSERT ON `my_action`
 FOR EACH ROW BEGIN
    INSERT INTO my_actionhistory (`actionid`, `opportunitynumber`, `active`, `actionhours`, `actionstatus`, `actiondescription`, `actiondate`, `userid`, `actionmail`, `actionmaildays`, `actionmailsent`, `mergeoppnr`, `changetimestamp`, `changetype`, `revision`)
    VALUES
    (NEW.actionid,NEW.opportunitynumber,NEW.active,NEW.actionhours ,NEW.actionstatus ,NEW.actiondescription ,NEW.actiondate ,NEW.userid ,NEW.actionmail ,NEW.actionmaildays ,NEW.actionmailsent ,NEW.mergeoppnr ,NOW() ,'insert', 1);
    END
$$
DELIMITER ;

viele Grüße hawk

  1. Hallo

    ich hatte heute Problem beim Import einer DB die drei Trigger hat. Ich hatte zuerst mit Phpmyadmin die DB als SQL File exportiert. Dann habe ich eine neue leere DB angelegt und wollte diese SQL Datei importieren.

    Beim Import kam dann dieser Fehler:

    MySQL meldet: Dokumentation #1303 - Can't create a TRIGGER from within another stored routine

    Mache ich was falsch beim Export oder müsste man den Export mit Phpmyadmin OHNE Trigger machen?

    Wenn ich die hiesige Stackoverflow-Antwort richtig verstehe, setzt phpMyAdmin von sich aus ein zusätzliches CREATE TRIGGER um den Code, wobei CREATE TRIGGER CREATE TRIGGER herauskommt. Das löst den Fehler aus, weil sich nun eine Prozedur innerhalb einer anderen befindet, was nicht sein darf („Can't create a TRIGGER from within another stored routine“).

    Tschö, Auge

    --
    Wir hören immer wieder, dass Regierungscomputer gehackt wurden. Ich denke, man sollte die Sicherheit seiner Daten nicht Regierungen anvertrauen.
    Jan Koum, Mitgründer von WhatsApp, im Heise.de-Interview
    1. Hallo Auge,

      ok, das erklärt natürlich alles. Wenn ich nämlich den Bereich "Trigger" aus dem Export nehme dann funktioniert auch der Import problemlos. Und wenn ich dann die Trigger von Hand separat importiere klappt das auch.

      Danke

      Gruss

      hawk