Problemas no backups mysql com java

5 respostas
wdwebsite

Olá boa tarde a todos;

Antes deixa eu explicar meu ambiente de trabalho para facilitar:
Netbeans 8.0.1
Mysql 5.6

Estou tentando fazer um backup do mysql, mas usei o código a seguir e criou o arquivo mas sem nada dentro, ou seja o codigo não e salvo de forma correta será que estou fazendo algo errado?

try {
//    File file = new File("Backup");
//    file.mkdir();
    String usuario = "root";
    int senha = 123456;
    String db = "dbapp";
    String nomeBkp = "siscomwd.sql";
String dump = "cmd /c mysqldump --user="+usuario+" --password="+senha+" "+db+" > C:/" + nomeBkp;
 //   String dump = "mysqldump.exe -u "+usuario+" --password="+senha+" -x -e -B -i -K --add-drop-database --add-drop-table -d --default-character-set=latin1 "+db+" > C:/" + nomeBkp;  
       
    Runtime bkp = Runtime.getRuntime();
    bkp.exec(dump);
    JOptionPane.showMessageDialog(null, "Backup realizado com sucesso!");
} catch (IOException ex) {
    JOptionPane.showMessageDialog(null, "erro" + ex.getMessage());
}

Fico no aguardo;

5 Respostas

wdwebsite

Como não tive resposta tive que fazer um sistema bem improvisado que já funcionou:

Primeiro tive que criar um arquivo .bat como mostrado a baixo:

@echo off
cls
date /t 
set data= 
for /F "tokens=1-3 delims=/ " %%a in ('date /T') do set data=%%c%%b%%a 

echo %data% 

"C:\Program Files\MySQL\MySQL Server 5.6\bin"\mysqldump.exe -u root -p123456 -h localhost  siscomwd > C:/siscomwd-"%data%".sql

Dai na parte do código fiz apenas um sistema para chamar o arquivo de backup:

try {
 
            String dump = "C:/backupdb.bat";
            Runtime bkp = Runtime.getRuntime();
            bkp.exec(dump);
            JOptionPane.showMessageDialog(null, "Backup realizado com sucesso!\n");
        } catch (IOException ex) {
            JOptionPane.showMessageDialog(null, "erro" + ex.getMessage());
        }

Alguém sabe me explicar como eu faço isso apenas em java, sem precisar chamar o .bat?

A
Fiz esse pequeno exemplo faça o teste.. até
/**
 * @author Andy11x
 */
public class Backup {
    
    public static void main(String[] args) {
        try{
            backup();
        }
        catch(Exception ex){}
    }  
    
    private static void backup() throws Exception {        
        String path = "C:\\Users\\Voce\\Desktop\\backup.sql";   
        //Observação sem colchetes
        String dump = "mysqldump --add-drop-table -u [usuario] -p[senha] -x -e -B [banco] > " + path;       
        String[] comandos = {"cmd.exe", "/c", dump};
        Runtime.getRuntime().exec(comandos);         
    }  
    //Exemplo
    //String dump = "mysqldump --add-drop-table -u root -pcasa -x -e -B livros > " + path;    
}
wdwebsite

Olá andy11x;

Testei seu código, como os anteriores que eu tinha testado, ele funciona sem erro, e inclusive cria o arquivo .sql, o problema que o arquivo gerado não tem nada dentro, ou seja e gerado vazio.

Agora com o código que mostrei antes funciona normal, você sabe o que pode estar acontecendo?

Pois eu gostaria de usar apenas o java para gerar este backup.

A

Nesse exemplo que te passei funciona normalmente, cria o backup do banco e gerando o .sql perfeitamente.
Estou utilizando: Netbeans 7.4, Mysql 5.1
até…

wdwebsite

Tentei o mesmo código no blueJ, para ver se seria algum problema no netbeans e não funcionou, meu banco de dados e o mysql 5.6, talvez o código e incompatível com esta versão de banco de dados.

De qualquer forma vou tentar outras maneiras. Obrigado.

Criado 22 de setembro de 2014
Ultima resposta 29 de set. de 2014
Respostas 5
Participantes 2