Fügen Sie einfach die Option -R im Befehl mysqldump hinzu.
Deepanshu Jain
Antworten:
120
mysqldumpSichert standardmäßig alle Trigger, jedoch NICHT die gespeicherten Prozeduren / Funktionen . Es gibt 2 mysqldump-Parameter, die dieses Verhalten steuern:
--routines - Standardmäßig FALSE
--triggers - Standardmäßig WAHR
Fügen Sie im mysqldumpBefehl Folgendes hinzu --routines:
Ich habe MySQL "5.1.48-Community" Ich führe "mysqldump --routines --no-create-info --no-data --no-create-db --skip-opt> dumpfile.sql;" aber es gibt Fehler und Fehler ist "FEHLER 1064 (42000): Sie haben einen Fehler in Ihrer SQL-Syntax; überprüfen Sie das Handbuch, das Ihrer MySQL-Serverversion entspricht, auf die richtige Syntax, die in der Nähe von 'mysql dump --routines --no verwendet werden kann -create-info --no-data --no-create-db --skip-opt> dum 'in Zeile 1 ". Wie man es löst? -
Yugal
Fügen Sie dem Befehl "-p -uusername dbname" hinzu, und Sie benötigen das ";" Zeichen am Ende
Haim Evgi
1
Denken Sie auch daran, dass Sie mysqldump an der Shell-Eingabeaufforderung ausführen sollten, nicht im MySQL-Befehlszeilenclient oder in phpMyAdmin oder einem anderen Abfragetool.
Bill Karwin
@HaimEvgi, warum sagst du -routinesstatt --routines?
Pacerier
--routinesFunktioniert jedoch nur, wenn der Benutzer über ausreichende Zugriffsrechte für die mysql.procTabelle verfügt. GRANT SELECT ON mysql.proc TO '<user>'@'localhost';
Rocki
20
Es mag für erfahrene Benutzer von MYSQL offensichtlich sein, aber ich habe einige Zeit damit verschwendet, herauszufinden, dass der Standardwert keine Funktionen exportieren würde. Deshalb wollte ich hier erwähnen, dass --routines param auf true gesetzt werden muss, damit es funktioniert.
Sie müssen --routines = true nicht verwenden. Sprocs werden standardmäßig NICHT ausgegeben. Sie müssen lediglich --routines gemäß dem Beispiel in die akzeptierte Antwort aufnehmen.
Gview
6
Ich habe das folgende Skript erstellt und es hat bei mir einwandfrei funktioniert.
Antworten:
mysqldump
Sichert standardmäßig alle Trigger, jedoch NICHT die gespeicherten Prozeduren / Funktionen . Es gibt 2 mysqldump-Parameter, die dieses Verhalten steuern:--routines
- Standardmäßig FALSE--triggers
- Standardmäßig WAHRFügen Sie im
mysqldump
Befehl Folgendes hinzu--routines
:Informationen zu mysqldump-Argumenten finden Sie in der MySQL-Dokumentation .
quelle
-routines
statt--routines
?--routines
Funktioniert jedoch nur, wenn der Benutzer über ausreichende Zugriffsrechte für diemysql.proc
Tabelle verfügt.GRANT SELECT ON mysql.proc TO '<user>'@'localhost';
Es mag für erfahrene Benutzer von MYSQL offensichtlich sein, aber ich habe einige Zeit damit verschwendet, herauszufinden, dass der Standardwert keine Funktionen exportieren würde. Deshalb wollte ich hier erwähnen, dass --routines param auf true gesetzt werden muss, damit es funktioniert.
quelle
Ich habe das folgende Skript erstellt und es hat bei mir einwandfrei funktioniert.
#! /bin/sh cd $(dirname $0) DB=$1 DBUSER=$2 DBPASSWD=$3 FILE=$DB-$(date +%F).sql mysqldump --routines "--user=${DBUSER}" --password=$DBPASSWD $DB > $PWD/$FILE gzip $FILE echo Created $PWD/$FILE*
und Sie rufen das Skript mit Befehlszeilenargumenten auf.
quelle