MySQL mysqldump du code Java sur les questions Win7

Ok, mon application Java n'est pas capable d'effectuer une sauvegarde mysqldump en utilisant l'environnement Windows Runtime. J'ai le code d'impression pour les exceptions interceptées et je ne vois pas d'exception levée, semble bien à la surface lorsque le code de sauvegarde est exécuté.

J'ai également testé la commande mysqldump dans la console de ligne de commande; et cela fonctionne sans problème.

Code:

Runtime rt = Runtime.getRuntime();
try {
    Process pr = rt.exec("mysqldump -u test --password=pass lager > newBackup.sql");

} catch (IOException ex) {
     System.out.println("IO error Runtime.  "+ex.getMessage());
}

Est-ce que quelqu'un sait pourquoi il ne va pas sauvegarder/sauvegarder la base de données? Y a-t-il une permission que j'ai besoin d'ajouter ou quelque chose (exécutant Windows 7).

0
Thats la chose, il ne jette aucune exception. J'avais l'habitude de mal utiliser la commande, ou je n'avais pas mysqldump en tant que variable PATH. Juste aucun fichier n'est sorti, et je ne sais pas pourquoi puisqu'il n'y a pas de retour.
ajouté l'auteur gorn, source
Vous imprimez ex.getMessage() mais vous ne nous dites pas ce qu'il dit?
ajouté l'auteur Radu Murzea, source

1 Réponses

Peut être que vous pourriez jeter un coup d'oeil sur cet article sur la différence beetwen exec et la ligne de commande ( http://www.javaworld.com/article/2071275/core-java/when-runtime-exec---won-t.html ).

De mon côté, j'essaye ce code qui fonctionne pour capturer la sortie de la commande mysqldump --help avec la recherche Class StreamGoggle dans l'article de javaworld:

    public Main() {
    try {
        FileOutputStream fos = new FileOutputStream("c:/tmp/test.txt");
        Runtime rt = Runtime.getRuntime();
        Process proc = rt.exec("mysqldump --help");
       //any error message?
        StreamGobbler errorGobbler = new StreamGobbler(
                proc.getErrorStream(), "ERROR");

        StreamGobbler outputGobbler = new StreamGobbler(
                proc.getInputStream(), "OUTPUT", fos);

        errorGobbler.start();
        outputGobbler.start();

        int exitVal = proc.waitFor();
        System.out.println("ExitValue: " + exitVal);
        fos.flush();
        fos.close();
    } catch (Throwable t) {
        t.printStackTrace();
    }
}
0
ajouté