Eu criei um arquivo em lotes para criar um despejo de um banco de dados e salvá-lo em um arquivo com a data atual como parte do nome do arquivo. O arquivo de lote funciona de forma brilhante e todos os dados são salvos corretamente.
Eu agora tentei configurar uma tarefa agendada para fazer isso semanalmente, mas me deparei com um problema: embora a tarefa seja executada, o arquivo que ela cria está vazio, como se não tivesse extraído nenhum dado do banco de dados remoto. Eu sei que é muito vago, mas alguém pode dizer onde eu começaria a procurar uma razão / solução?
** EDITAR **
Certo, mais progresso - parece que pode ser um problema de caminho Eu coloquei uma pausa no arquivo de lote e, quando executado através do agendador de tarefas, ele diz: 'mysqldump não é um programa reconhecido'. No entanto, quando executado através da linha de comando na minha conta de usuário, funciona bem; apenas para confirmar, eu o configurei na mesma conta de usuário em que o testei.
** EDIT 2 **
Eu encontrei um tipo de solução: Eu tive que referenciar o aplicativo mysqldump pelo seu caminho absoluto. No entanto, ainda não consigo entender por que ele pode encontrar mysqldump a partir do caminho quando executado diretamente a partir da linha de comando, mas não quando automatizado através do agendador de tarefas.
fonte
c:\xampp\mysql\bin` where bin contains all of the mysql binaries. when running the batch file from the command line, i just need to refer to the application name -
mysqldump. When running from the task scheduler, it refuses to work unless i provide the batch file with the full path to
mysqldump.exe`Você já tentou executar o mysqldump (em sua tarefa agendada) no modo detalhado? (--verbose)
Além disso, talvez olhe para qual usuário sua tarefa está sendo executada, certifique-se de que o usuário tenha permissões para executar o mysqldump e criar um arquivo no diretório de destino.
fonte
Se o caminho absoluto resolver o seu problema, não será possível criar um arquivo vazio. Em vez disso, nenhum arquivo criado com o log do Windows Scheduler mostra o trabalho bem-sucedido.
Seu script pode funcionar na linha de comando, se a variável path contiver as informações do caminho para mysqldump.exe. Verifique isso dando o comando "path" para a linha de comando.
Para sua referência, aqui está o arquivo de lote de amostra que usei para o backup do mysql.
fonte