Windows 7 任务计划 / mysqldump

Windows 7 任务计划 / mysqldump

我创建了一个批处理文件,用于创建数据库转储并将其保存在一个文件中,文件名中包含当前日期。该批处理文件运行良好,所有数据均正确保存。

我现在尝试设置一个计划任务来每周执行一次,但遇到了一个问题:虽然任务运行了,但它创建的文件是空的,好像它没有从远程数据库中提取任何数据。我知道这很模糊,但有人能告诉我从哪里开始寻找原因/解决方案吗?

** 编辑 **

好的,又有进展了 - 看起来可能是路径问题,我在批处理文件中设置了暂停,当通过任务计划程序运行时,它显示:“mysqldump 不是可识别的程序”。但是,当我通过命令行在我的用户帐户上运行时,它运行正常;只是为了确认,我已将其设置为在测试它的同一用户帐户上运行。

** 编辑 2 **

我找到了一种解决方案:我必须通过绝对路径引用 mysqldump 应用程序。但是我仍然不明白为什么直接从命令行运行时可以从路径中找到 mysqldump,但通过任务调度程序自动运行时却找不到。

答案1

也许网络不可用?您可以尝试将其安排为每 5/10 分钟运行一次,看看命令/变量是否正确。您确定脚本在作为整体运行时正确运行,而不是一次只运行单个命令?


在您的编辑 2 中:似乎PATH环境变量中不存在 mysqldump。尝试添加它,然后重试。

答案2

您是否尝试过在详细模式下运行 mysqldump(在您的计划任务中)?(--verbose)

另外,也许看看您的任务以哪个用户身份运行,确保该用户有权运行 mysqldump 并在目标目录中创建文件。

答案3

  1. 如果给出绝对路径解决了您的问题,则无法创建空文件。相反,使用 Windows 调度程序日志创建的文件均未显示作业成功。

  2. 如果路径变量保存了 mysqldump.exe 的路径信息,您的脚本可能可以在命令行上运行。通过向命令行提供“path”命令来检查它。

  3. 供您参考,这里有我用于 mysql 备份的示例批处理文件。

@echo 关闭
设置 DB_USER_ID=[id]  
设置 DB_USER_PASS=[密码]
设置数据库=[数据库名称]
SET EXP_PATH=[备份路径]
SET EXP_TMP_PATH=[临时路径]
SET FILE_NAME=[备份文件名]
对于 /f "tokens=1-3 delims=- " %%a 在 ('date /t') 中执行 (设置今天=%%a-%%b-%%c)

删除/S/Q %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
移动 %EXP_TMP_PATH%\%FILE_NAME%_%today%.sql %EXP_PATH%\%FILE_NAME%_%today%.sql

相关内容