phpmyadmin export und Import mit Trigger, Fehler 1303
hawkmaster1
- sql
1 Auge
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
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
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