Zur Navigation

mysqldump trigger

1 norbert (Gast)

Guten Tag,
kann mir jemand bei folgendem Problem helfen:
Ich erstelle eine Datei mit mysqldump von einigen Tabellen auf meinem Server. Diese gebe ich weiter und ein anderer liest sie in seine Datenbank ein. Normale Tabellen machen keine Probleme. Nun hab ich bei mir Trigger eingefügt. Als der Dump auf dem entfernten Rechner eingelesen wurde, gabs keine Probleme. Wenn aber jetzt dort ein INSERT gemacht werden soll, kommt die Fehlermeldung:
1449 - There is no 'chef'@'%' registered
Als "chef" war ich auf meinem Server eingeloggt, als ich den Dump gemacht habe. MySql schreibt in das Dumpfile
/*!50003 CREATE */ /*!50017 DEFINER=`chef`@`%` */ /*!50003 TRIGGER ...
Ich bin leider kein Profi und kann das nicht deuten. Ob das bei zukünftigen StoredProcedures auch solche Probleme macht? Lässt sich das irgendwie lösen? Alle Dumps mit der Hand nachzuarbeiten ist schwierig (ich wüsste auch im Moment nicht wie), weil es viele Tabellen sind und quartalsweise ein Update gefahren werden muss. Gibt es bei mysqldump eine entsprechende Option?
Danke für eine Antwort.
norbert

16.06.2009 11:29

2 Jörg Kruse

Der Man-Page zufolge gibt es ab Version 5.0.11 die Option --skip-triggers

16.06.2009 11:42

3 norbert (Gast)

Danke für die schnelle Antwort. Aber da werden ja wohl die Trigger auf dem fremden Rechner gar nicht angelegt, oder? Das löst das Problem leider nicht, denn die Trigger müssen vorhanden sein.

16.06.2009 12:04

5 norbert (Gast)

Ich bin sehr froh, dass ich endlich einen Ansprechpartner gefunden habe. Danke. Vielleicht kannst Du es knacken.
Wie die Zieldatenbank heisst und mit welchem User sie gefahren wird - darauf habe ich leider keinen Einfluss (20 Anwender und jeder macht es anders - Localhost, SAMBA, Windows Server 2003 ...). Lediglich die MySql-Tabellen sind fest vorgegeben. Und die muss ich quartalsweise updaten. Stelle den Dump auf meiner Homepage zur Verfügung. Ging bisher reibungslos. Nur jetzt, wo ich mein Programm etwas verfeinere undTrigger und StoredProcedures einsetze, will es einfach nicht klappen.

16.06.2009 12:25

6 Jörg Kruse

Probier es mal mit "CURRENT_USER" anstelle von "`chef`@`%`":

DEFINER=CURRENT_USER

Das sollte portabel sein.

16.06.2009 12:44

7 norbert (Gast)

Kann ich das beim mysqldump einstellen? Oder muss ich das gesamte Dumpfile durchsuchen und korrigieren?
Was passiert, wenn man DEFINER einfach rauslöscht (wenn ich ja doch selbst Hand anlegen muss)?

16.06.2009 12:50

8 Jörg Kruse

Dem MySQL Manual zufolge kannst es wohl auch ganz rausnehmen, es ist optional und der Standardwert ist "CURRENT_USER":

Zitat von MySQL 5.1 Referenzhandbuch
Der Standardwert für DEFINER ist der Benutzer, der die CREATE TRIGGER-Anweisung ausführt. (Dies ist dasselbe wie DEFINER = CURRENT_USER.)

Für mysqldump habe ich keine solche Option gefunden.

16.06.2009 13:09

9 norbert (Gast)

Nochmals vielen Dank. Du hast mir echt sehr geholfen. Tolles Forum!
Schöne Grüße
Norbert

16.06.2009 13:11

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]