+1 für diese Frage, weil es viele Entwickler in der DB-Welt gibt, die gerne gespeicherte Prozeduren außerhalb von MySQL in Versionskontrollsoftware katalogisieren, die dies tun möchten (ich bin kein Fan davon, ich selbst)
RolandoMySQLDBA
In meinem Fall gab mir dieser Befehl einen Fehler, mysqldump: Got error: 23: "Out of resources when opening file"ich hatte die --single-transactionMöglichkeit, diesen Fehler zu beheben. Und wenn Sie nur die Routine wollen, können Sie hinzufügen - -no-create-infoum die Anweisung create table zu vermeiden.
Bedomon
Antworten:
34
Dies sollte es für Sie tun:
mysqldump -h...-u...-p...-n -d -t --routines --triggers --all-databases > MySQLStoredProc.sql-n,--no-create-db Suppress the CREATE DATABASE ... IF EXISTS statement
that normally is output for each dumped databaseif--all-databases or --databases is given.-d,--no-data No row information.--triggers Dump triggers for each dumped table.(Defaults toon;use--skip-triggers to disable.)-R,--routines Dump stored routines (functions and procedures).-t,--no-create-info Do not write CREATE TABLE statements that create each
dumped table.
VORBEHALT
Es ist viel besser, die gespeicherten Prozeduren nicht von der Datenbank zu trennen, damit bestimmte gespeicherte Prozeduren in der Datenbank erstellt werden, für die sie bestimmt sind. Gleiches gilt für Trigger. Das wäre vorzuziehen:
Ich habe dies versucht und musste die Option '-t' hinzufügen, um die create table-Anweisungen nicht zu erhalten.
Derek Downey
Ich habe das vergessen, schade, dass ich Kommentare nicht verbessern kann. Ich habe den ersten mysqldump-Befehl aktualisiert, um ihn einzuschließen. Der zweite sollte ausgelassen werden, um jeden Trigger seiner Basistabelle zuzuordnen. Nochmals vielen Dank, @DTest !!!
RolandoMySQLDBA
Kein Problem. In meinem Fall wollte ich nur gespeicherte Funktionen / Prozeduren für eine bestimmte Datenbank und keine Trigger. Also hat es gut
mysqldump: Got error: 23: "Out of resources when opening file"
ich hatte die--single-transaction
Möglichkeit, diesen Fehler zu beheben. Und wenn Sie nur die Routine wollen, können Sie hinzufügen --no-create-info
um die Anweisung create table zu vermeiden.Antworten:
Dies sollte es für Sie tun:
VORBEHALT
Es ist viel besser, die gespeicherten Prozeduren nicht von der Datenbank zu trennen, damit bestimmte gespeicherte Prozeduren in der Datenbank erstellt werden, für die sie bestimmt sind. Gleiches gilt für Trigger. Das wäre vorzuziehen:
quelle