1

Java クラスから mysqldump コマンドを実行していますが、タイトルに記載されているエラーが発生し続けます。

これは私が使用しているコードです:

        Process runtimeProcess = Runtime.getRuntime().exec("mysqldump -uroot -pmypassword valo > /etc/valbu.sql");
        int processComplete = runtimeProcess.waitFor();
        if(processComplete == 0){
            System.out.println("Backup taken successfully");
        } else {
            InputStream stderr = runtimeProcess.getErrorStream();
            InputStreamReader isr = new InputStreamReader(stderr);
            BufferedReader br = new BufferedReader(isr);
            String line = null;
            System.out.println("<ERROR>");
            while ( (line = br.readLine()) != null)
                System.out.println(line);
            System.out.println("</ERROR>");
            System.out.println("Could not take mysql backup");
        }

>それがテーブルではなく、ダンプするためのコマンドであることを理解していないようです。

4

3 に答える 3

3

一般的な問題 - パイプまたはリダイレクトを使用してステートメントを実行できない。それらはシェルによってのみ実行できます。

さらに読む

于 2013-01-07T10:54:25.230 に答える
3

result-fileリダイレクト演算子の代わりに、mysqldump コマンドでオプションを使用してみてください>

mysqldump -uroot -pmypassword valo --result-file=/etc/valbu.sql

于 2015-09-07T20:14:25.813 に答える
1

Runtime.exec()はシェルを呼び出さず>、シェルのリダイレクトであるため、これは機能しません。

したがって、{ "/bin/bash", "-c", "thescripthere" }, (推奨されません) のような配列を使用するか、たとえば a を使用しProcessBuilderます。

于 2013-01-07T10:55:25.587 に答える