Windows 7-Task-Zeitplan / mysqldump

2670
richzilla

Ich habe eine Batchdatei erstellt, um einen Dump einer Datenbank zu erstellen und in einer Datei mit dem aktuellen Datum als Teil des Dateinamens zu speichern. Die Batch-Datei funktioniert hervorragend und alle Daten werden korrekt gespeichert.

Ich habe jetzt versucht, eine geplante Aufgabe für diese wöchentliche Ausführung einzurichten, aber ich bin auf ein Problem gestoßen: Obwohl die Aufgabe ausgeführt wird, ist die von ihr erstellte Datei leer, als ob sie keine Daten aus der entfernten Datenbank abgerufen hätte. Ich weiß, dass es ziemlich vage ist, aber kann jemand sagen, wo ich nach einem Grund / einer Lösung suchen würde?

** BEARBEITEN **

Richtig, mehr Fortschritt - es scheint ein Pfadproblem zu sein. Ich habe eine Pause in die Batchdatei eingefügt, und wenn sie durch den Taskplaner läuft, heißt es: 'mysqldump ist kein erkanntes Programm'. Wenn Sie jedoch die Befehlszeile meines Benutzerkontos ausführen, funktioniert das problemlos. Zur Bestätigung habe ich festgelegt, dass es unter demselben Benutzerkonto ausgeführt wird, mit dem ich es getestet habe.

** EDIT 2 **

Ich habe eine Art Lösung gefunden: Ich musste die Anwendung mysqldump anhand ihres absoluten Pfads referenzieren. Ich kann jedoch immer noch nicht verstehen, warum es mysqldump über den Pfad finden kann, wenn es direkt von der Befehlszeile aus ausgeführt wird, aber nicht, wenn es durch den Taskplaner automatisiert wird.

0

3 Antworten auf die Frage

1
Sathya

Vielleicht war das Netzwerk nicht verfügbar? Sie könnten versuchen, es alle 5/10 Minuten auszuführen und zu überprüfen, ob die Befehle / Variablen korrekt ausgeführt werden. Sind Sie sicher, dass das Skript korrekt ausgeführt wird, wenn es als Ganzes ausgeführt wird und nicht nur ein einzelner Befehl auf einmal?


Zu Ihrem Edit 2: Scheint, als wäre mysqldump nicht in den PATHUmgebungsvariablen vorhanden. Fügen Sie das hinzu und versuchen Sie es erneut.

Es ist kein Netzwerkproblem. Ich kann die gesamte Stapeldatei von der Befehlszeile aus ausführen, und es funktioniert in Ordnung, und ich bekomme das gleiche Problem, wenn ich von meinem lokalen MySQL-Server eine Sicherung durchführe richzilla vor 13 Jahren 0
Ja das ist das Problem, es ist im Pfad. Im Pfad habe ich `c: \ xampp \ mysql \ bin \` gefunden, wobei bin alle mysql-Binaries enthält. Wenn Sie die Batchdatei von der Befehlszeile aus ausführen, muss ich nur auf den Namen der Anwendung - `mysqldump` verweisen. Wenn er vom Task-Scheduler ausgeführt wird, kann er nicht funktionieren, es sei denn, ich gebe der Batch-Datei den vollständigen Pfad zu `mysqldump.exe` an richzilla vor 13 Jahren 0
0
Aerik

Haben Sie versucht, mysqldump (in Ihrer geplanten Aufgabe) im ausführlichen Modus auszuführen? (--verbose)

Sehen Sie sich auch an, unter welchem ​​Benutzer Ihre Aufgabe ausgeführt wird, und stellen Sie sicher, dass der Benutzer über die Berechtigung zum Ausführen von mysqldump verfügt und eine Datei im Zielverzeichnis erstellt.

Der Benutzer, für den die Aufgabe ausgeführt wird, ist derselbe wie der Benutzerordner, um den sich alle Dateien befinden, daher sollte dies kein Berechtigungsproblem sein. richzilla vor 13 Jahren 0
Ich habe das Verbose-Flag ausprobiert. Wieder funktioniert es gut, wenn ich die Batch-Datei von der Befehlszeile aus ausführe. Wenn ich es jedoch über den Task-Scheduler ausführte, wird eine Eingabeaufforderung angezeigt, die sofort verschwindet. Ich habe keine Chance zu sehen, was es ist sagt richzilla vor 13 Jahren 0
0
Heungwoo
  1. Wenn der Pfad absolut angegeben ist, ist es nicht möglich, eine leere Datei zu erstellen. Stattdessen zeigt keine mit dem Windows-Scheduler-Protokoll erstellte Datei den Job erfolgreich an.

  2. Ihr Skript funktioniert möglicherweise in der Befehlszeile, wenn die Pfadvariable die Pfadinformationen zu mysqldump.exe enthält. Überprüfen Sie es, indem Sie den Befehl "Pfad" an die Befehlszeile übergeben.

  3. Hier finden Sie eine Beispiel-Batch-Datei, die ich für die mysql-Sicherung verwendet habe.

@echo aus SET DB_USER_ID = [id]  SET DB_USER_PASS = [Passwort] SET DATABASE = [Datenbankname] SET EXP_PATH = [Sicherungspfad] SET EXP_TMP_PATH = [temporärer Pfad] SET FILE_NAME = [Sicherungsdateiname] Für / f "token = 1-3 delims = -" %% a in ('date / t') do (set today = %% a - %% b - %% c)  del / S / Q% EXP_PATH% md% EXP_PATH% md% EXP_TMP_PATH%  C: \ Bitnami \ redmine-2.5.2-0 \ mysql \ bin \ mysqldump.exe -u% DB_USER_ID% -p% DB_USER_PASS%% DATABASE%>% EXP_TMP_PATH% \% FILE_NAME% _% today% .sql move% EXP_TMP_PATH% \% FILE_NAME% _% today% .sql% EXP_PATH% \% FILE_NAME% _% today% .sql