Я создал пакетный файл, чтобы создать дамп базы данных и сохранить его в файл с текущей датой как часть имени файла. Пакетный файл работает великолепно, и все данные сохранены правильно.

Сейчас я попытался настроить запланированное задание для этого еженедельно, но столкнулся с проблемой: хотя задание выполняется, файл, который он создает, пуст, как если бы он не извлекал данные из удаленной базы данных. Я знаю, что это довольно расплывчато, но кто-нибудь может сказать, с чего бы я начал искать причину / решение?

** РЕДАКТИРОВАТЬ **

Да, больше прогресса - похоже, это может быть проблема с путём. Я поставил паузу в командном файле, и при запуске через планировщик задач он говорит:«mysqldump не является распознанной программой». Однако при запуске через командную строку в моей учетной записи он работает нормально; просто чтобы подтвердить, я настроил его на ту же учетную запись, на которой я его тестировал.

** РЕДАКТИРОВАТЬ 2 **

Я нашел своего рода решение: мне пришлось ссылаться на приложение mysqldump по его абсолютному пути. Однако я до сих пор не могу понять, почему он может найти mysqldump по пути при запуске непосредственно из командной строки, но не при автоматизации через планировщик задач.

3 ответа3

1

Может быть, сеть была недоступна? Вы можете попробовать запланировать его запуск каждые 5/10 минут и посмотреть, правильно ли работают команды / переменные. Вы уверены, что скрипт работает правильно, когда запускается как единое целое, а не как одна команда за раз?


При редактировании 2: Похоже, что mysqldump отсутствует в переменных среды PATH . Попробуйте добавить это и попробуйте снова.

0

Вы пытались запустить mysqldump (в запланированном задании) в подробном режиме? (--подробный)

Также, возможно, посмотрите, от какого пользователя выполняется ваша задача, убедитесь, что у пользователя есть разрешения на запуск mysqldump и создание файла в целевом каталоге.

0
  1. Если указание абсолютного пути решило вашу проблему, создать пустой файл невозможно. Вместо этого ни один файл, созданный с помощью журнала планировщика Windows, не показывает работу успешно.

  2. Ваш скрипт может работать в командной строке, если переменная пути содержит информацию о пути к mysqldump.exe. Проверьте это, задав команду "path" в командной строке.

  3. Для справки вот образец командного файла, который я использовал для резервного копирования MySQL.

@echo off
SET DB_USER_ID=[id]  
SET DB_USER_PASS=[password]
SET DATABASE=[database name]
SET EXP_PATH=[backup path]
SET EXP_TMP_PATH=[temp path]
SET FILE_NAME=[backup filename]
For /f "tokens=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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .