Problema na hora do backup do mysql via java

8 respostas
A

Pessoal, pesquisei como fazer, achei o conhecido mysqldump, testei no console, funcionou, mas quando chamo de dentro da aplicação, não acontece nada

try {
           Runtime.getRuntime().exec("cmd /c "+pasta_bin_do_mysql+"\mysqldump -h "+ip_server+" -u "+user+" "+nome_do_banco+" > "+System.getProperty("user.dir")+"\backup.sql"); 
        } catch (Exception e) {
            e.printStackTrace();
        }

eu chamo o método mas não acontece nada, nenhum erro, as variáveis estão ok, a sintaxe para o mysqldump também, já que roda normal no cmd.

alguma sugestão de onde esteja o erro?

8 Respostas

caiozanchetti

Alexandreapt eu tive um problema assim com um programa para configurar a placa de rede do meu note… Nao tenho como testar isso pra vc, mas tente colocar um /k no seu argumento do cmd. Acredito que o cmd esteja finalizando antes mesmo de poder executar o dump…
Pode ser que eu esteja enganado mas comigo aconteceu um problema bem semelhante…

A

caiozanchetti, tentei com o /c, o /k e até sem nada, mas continua não acontecendo nada.

existe alguma outra forma de se executar uma aplicação externa?

caiozanchetti

Opa cara ouvi comentários sobre as classes ProcessBuilder e Process para usar processos externos dá uma conferida, caso queira uma forma alternativa para resolver o seu problema.

Vc tem certeza que no momento do System.getProperty(“user.dir”) e caminho estão certos neh…

A

sim, tudo certo com o System.getProperty(“user.dir”)

estava pesquisando aqui e pelo o que percebi a melhor forma é usar o stream para salvar o resultado do cmd/mysqldump

estou fazendo assim agora

Process  process = Runtime.getRuntime().exec("cmd /c "+url+"\mysqldump -h "+host+" -u "+user+" "+db_name); 
           
           OutputStream os = new FileOutputStream (System.getProperty("user.dir")+"\backup.sql");
os = process.getOutputStream();

mas não sei como salvar o conteúdo do stream em um arquivo.

alguma dica?

caiozanchetti

Usa a OutputStreamWriter, qq coisa grita outra vez.

A

como? como passo o stream e como mando ele salvar?

caiozanchetti

Alexandreapt vamos fazer um teste: Tenta fazer um bat e executar ele normalmente pra ver se o dump acontece, depois tenta chamar esse bat com o runtime (talvez esse post possa te ajudar quanto a questao do outputstrem: http://www.guj.com.br/posts/list/57056.java), posta os resultados desses testes…
Abraço,

A

a idéia do bat eu estava guardando caso nada mais funcionasse hehe

bom, é mais simples/fácil usar o bat, deixarei a idéia do outputstrem para uma próxima versão do sistema, ainda não entendi direito como ele funciona.

valeu pela ajuda caiozanchetti, brigadão

Criado 16 de abril de 2007
Ultima resposta 18 de abr. de 2007
Respostas 8
Participantes 2