MySQL Java Programm als Dienst MySQL Dump zurück spielen

patrick_e

Aktives Mitglied
Guten Tag,

ich habe ein Java Programm geschrieben das einen MySQL Dump zurückspielen soll. Das Programm wird über srvany.exe als Dienst registriert. Wenn ich nun das Programm als Dienst starte kann ich den Dump nicht einspielen. Öffne ich mein Programm ganz normal über eine Batch funktioniert der Import. Woran könnte das liegen? Es ist ein Client Server Programm daher der Dienst.
Java:
    public int restoreFullDB(String dbUserName, String dbPassword, String source) {

        String[] restoreCmd = new String[]{"\""+sql.getMysqlFolder()+"\\mysql\"", "-u" + dbUserName, "-p" + dbPassword, "-e", "source " + source};

        System.out.println(restoreCmd[0]);
        System.out.println(restoreCmd[1]);
        System.out.println(restoreCmd[2]);
        System.out.println(restoreCmd[3]);
        System.out.println(restoreCmd[4]);

        Process runtimeProcess;
        try {

            runtimeProcess = Runtime.getRuntime().exec(restoreCmd);
            int processComplete = runtimeProcess.waitFor();

            if (processComplete == 0) {
                System.out.println("Restored successfully!");
            } else {
                System.out.println("Could not restore the backup!");
            }
            return processComplete;
        } catch (Exception ex) {
            ex.printStackTrace();
            return 1;
        }

    }
 
Zuletzt bearbeitet:
Diese Funktion wird auf dem Server ausgeführt und nur vom Client aufgerufen. Wenn man den Server über eine Batch startet funktioniert es ja auch einwandfrei nur als Dienst über srvany funktioniert es nicht.
 
Ich habe jetzt die Fehlermeldung mir ausgeben lassen...

Warning: Using a password on the command line interface can be insecure.

Also habe ich über den mysql_config_editor einen Login Path eingerichtet

mysql_config_editor set --login-path=local --host=localhost --user=localuser --password

..jedoch funktioniert jetzt mein Befehl nicht es kommt die Fehlermeldung...

Unknown Database

hier nochmal mein Code...
Java:
public int restoreFullDB(String dbUserName, String dbPassword, String source) {

        String[] //restoreCmd = new String[]{"\"" + sql.getMysqlFolder() + "\\mysql\"", "-u" + dbUserName, "-p" + dbPassword, "-e", "source " + source};
        restoreCmd = new String[]{"\"" + sql.getMysqlFolder() + "\\mysql\"", "--login-path=local", "-e", "source " + source};
        
        
        System.out.println(restoreCmd[0]);
        System.out.println(restoreCmd[1]);
        System.out.println(restoreCmd[2]);
        System.out.println(restoreCmd[3]);
        System.out.println(restoreCmd[4]);

        Process runtimeProcess;
        try {

            runtimeProcess = Runtime.getRuntime().exec(restoreCmd);
            //####################################################################
            InputStream istr = runtimeProcess.getInputStream();
            BufferedReader br = new BufferedReader(new InputStreamReader(istr));
            final BufferedReader bre = new BufferedReader(new InputStreamReader(runtimeProcess.getErrorStream()));
            new Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                        String s = "";
                        while ((s = bre.readLine()) != null) {
                            sql.setEvent("RESTORE", 0, s, 99);
                        }
                    } catch (IOException ex) {
                        java.util.logging.Logger.getLogger(Guardserver.class.getName()).log(Level.SEVERE, null, ex);
                    }
                }
            }).start();
            //####################################################################
            int processComplete = runtimeProcess.waitFor();

            

            if (processComplete == 0) {
                System.out.println("Restored successfully!");
            } else {
                System.out.println("Could not restore the backup!");
            }
            return processComplete;
        } catch (Exception ex) {
            ex.printStackTrace();
            return 1;
        }

    }
 

Neue Themen


Zurück
Oben