Pessoal, porque esse código não funciona? tentei implementar no meu projeto e parece que foi realizado, mas não gera o arquivo.(WEB)
Nenhum dos exemplos funcionou.
Não sei se é o seu caso, tive o mesmo problema so consegui resolver colocando uma senha no servidor do banco de dados , pelo que vejo o seu esta sem senha ,ai não sei porque não funciona de dentro do java so em cmd mesmo. Tenta por uma senha no servidor do banco e colocar ela na chamada do Runtime, talvez funcione , comigo pelo menos deu certo.
@Joesel infelizmente não deu certo aconteceu a mesma coisa.
Outro teste realizado foi usando o método desta maneira para obter a exception, porem da acesso negado .
Com a classe BufferedReader eu consigo obter o erro do Runtime() ,
mas o erro permanece.
public void backup() {
try {
Runtime rt = Runtime.getRuntime();
String[] commands = {"C:\\xampp\\mysql\\bin\\mysqldump.exe"
+ " -v -v -v --host=localhost --user=root --password= --port=3306 "
+ "--protocol=tcp --force --allow-keywords --compress "
+ "--add-drop-table --default-character-set=latin1 --hex-blob "
+ " --result-file=BACKUP.sql --databases NOMEDB"};
Process proc = rt.exec(commands);
BufferedReader stdInput = new BufferedReader(new
InputStreamReader(proc.getInputStream()));
BufferedReader stdError = new BufferedReader(new
InputStreamReader(proc.getErrorStream()));
// read the output from the command
System.out.println("Here is the standard output of the command:\n");
String s = null;
while ((s = stdInput.readLine()) != null) {
System.out.println(s);
}
// read any errors from the attempted command
System.out.println("Here is the standard error of the command (if any):\n");}
while ((s = stdError.readLine()) != null) {
System.out.println(s);
} catch (Exception exc)
{
exc.printStackTrace();
System.out.println(exc);
}
}
O erro que esta aparecendo é esse:
mysqldump: Got error: 1102: Incorrect database name ’ -v -v -v --host=localhost --user=root --password= --port=3306 --protocol=tcp --force --allow-keywor’ when selecting the database
tentei executar o camando como administrador usando comando runa:
Process proc = rt.exec("runas /userALL Users "+commands);