Estou tentando fazer backup do banco de dados mysql em tempo de execução e não estou conseguindo, veja o que tentei:
packagefolder;publicclassBackup{publicstaticvoidmain(String[]args){try{Runtime.getRuntime().exec("mysqldump -u root -p 123 Teste > /home/gustavo/Desktop/BACKUP/Backup000000.sql");}catch(Exceptione){// TODO Auto-generated catch blocke.printStackTrace();}}}
Tudo que encontro pela net é parecido. Quando eu usava o Rwindow$ isso funcionava ("mysqldump -u root -p 123 Teste > /home/gustavo/Desktop/BACKUP/Backup000000.sql") mas parece que no mysql para Linux o mysqldump não existe?!
o problema tá na forma como vc ta passando o passwd.
Agora, pra que usar java pra rodar um comando?
[]'s
gqferreira
Porque a minha aplicação vai fazer isso e muito mais. Isso é só um trecho … um teste…
gqferreira
Assim?:
packagefolder;publicclassBackup{publicstaticvoidmain(String[]args){try{Runtime.getRuntime().exec("mysqldump -u root --p=123 Teste > /home/gustavo/Backup000000.sql");}catch(Exceptione){// TODO Auto-generated catch blocke.printStackTrace();}}}
Não funcionou....
andre_udi
Olá.
mão pode ter espaço entre o -p e o password.
Ex:
[]'s
gqferreira
Deixei sem espaço e deu na mesma? Em que distribuição você testou? Tem certeza que o mysqldump tem no Linux?
andre_udi
olá,
depende da distribuição, se ela vem ou não instalado.
Vê na máquina que vc ta usando se tem ou não o comando, e se tá no path.
Se não tiver é só instalar.
[]'s
gqferreira
Encotrei um script na net e funcionou:
#!/bin/bash# Exporta dados de uma base mysql para um txt# By Marcelo Garcia 06/11/2004if[$#-lt"1"];then# Teste se tem ao menos 1 parametro - databaseecho-e"\nSyntaxe : ./mybackup.sh database [user] [password] [host] \n"exit1# exibo sintaxe e saio com codigo de errofi# Atribuo parametros para variaveisdatabase=$1user=$2passwd=$3host=$4backup_file=$5".sql"# Verifico as variaveis (parametros) opcionais e atribuo o default caso vaziolet${passwd:="backup"}let${user:="backup"}let${host:="localhost"}#Exceta a exportacao de dadosmysqldump--host=$host--user=$user--password=$passwd--databases$database>$backup_file
Também tentei isso e funcionou:
mysqldump --host=localhost --user=root --password=123 --databases Teste > Backup.sql
Mas fazendo isso não dá certo:
Runtime.getRuntime().exec("mysqldump --host=localhost --user=root --password=123 --databases Teste > /home/gustavo/Desktop/BACKUP/Backup.sql");
Como faço para colocar o script na minha aplicação e chama-lo?
andre_udi
olá,
basta que o seu script tenha permissão de execução, e chamá-lo como se chama qualquer programa.