Gente, estou com o mesmo problema e gostaria que vocês analizassem até onde eu cheguei e vejam se vcs tem algum palpite.
Tenho o código:
private void retornoCopiaSeguranca(String path) {
try {
String comando = "cmd.exe /c \"C:\\Program Files\\MySQL\\MySQL Server 5.1\\bin\\mysql.exe\" -hlocalhost --user=root --password=password < "+path;
System.out.println(comando);
Runtime.getRuntime().exec(comando);
} catch (Exception ex) {
JOptionPane.showMessageDialog(this, "Retorno não realizado:\n\n" + ex, "Backup" ,JOptionPane.ERROR_MESSAGE);
}
}
Onde a String path eu passo o local do arquivo. Até aí sem problemas.
O curioso:
Se a String path for um local que não contenha espaços, mostro: C:\BACKUP.SQL o backup é restaurado que é uma beleza!
Entretanto, se o path for um local: “C:\Local do Arquivo\BACKUP.SQL” o backup simplesmente NÃO é restaurado! Mesmo que eu verifique e inclua “”(aspas) no começo e no final da String path.
E o mais doido ainda é que se você executar pelo cmd, o desgraçado executa tudo lindo! Por exemplo pegando a String toda fica:
cmd.exe /c "C:\Program Files\MySQL\MySQL Server 5.1\bin\mysql.exe" --user=root --password=password < "C:\Local do Arquivo\backup.sql" //Pelo CMD ele executa, chamando o cmd pelo java Não.
O problema todo se dá quando eu coloco aspas no local do arquivo(pelo java, pelo CMD vai legal)
Alguém aí agora se habilita?? rsrs