0

私はJavaでこのコマンドを試しています

executeCmd = DBConfig.dbLocation + "\\mysqldump -u " + mysqlUser +
    " -p"+DBConfig.dbPass + " " + DBConfig.dbName + 
    " -r -opt>supervisorDbBkup.sql";

0 ではなくコード 1 が表示される

            String executeCmd = "";
    executeCmd = DBConfig.dbLocation+"\\mysqldump -u"+mysqlUser+
            " -p"+DBConfig.dbPass+" "+DBConfig.dbName+" -r -opt>supervisorDbBkup.sql";

    Process runtimeProcess =Runtime.getRuntime().exec(executeCmd);
    int processComplete = runtimeProcess.waitFor();
    if(processComplete == 0){
        return "Backup taken successfully";
    } else {
        return "Could not take mysql backup";
    }

これは私が実行しているコマンドです:

                E:\program file\MySQL\MySQL Server 5.5\bin\mysqldump -uroot -p0502 dashboardsupervisor -r -opt>supervisorDbBkup.sql

何か案が

4

3 に答える 3

2

あなたがする必要があるのはexecuteCmd、あなたがそれを構築した後にその内容を印刷して、それが何を含んでいるかを確認することです:

Console.Out.WriteLine (executeCmd);

そのコマンドが作成したとおりにコマンド ラインで機能しない場合、そのコマンドがプログラム内で機能する可能性はほとんどありません。コマンドを出力どおりにコピーして貼り付け、cmdシェルから実行してみてください。

あなたの問題は、実行可能ファイルへのパスまたはオプションの 1 つにあると思われます。

そうでない場合は、リダイレクトに注意する必要があります。リダイレクションはシェル機能であり、Runtime.exec()コールでは使用できない場合があります。リダイレクト ビットがパラメーターとして実行可能ファイルに渡されていることがわかりますが、mysqldump実行可能ファイルはそれをまったく理解していません。

これを行う通常の方法は、次のように、コマンドの実行方法と適切なリダイレクト方法を伝える引数を使用してシェル自体を呼び出すことです。

String[] cmd = {"/bin/sh", "-c", "/path/to/mysqldump blah blah >/tmp/tempout"};
Process p = Runtime.getRuntime().exec(cmd);

cmd /c(またはWindows の場合は同等)。

これにより、リダイレクトが (シェル自体によって) 正しく処理され、mysqldump実行可能ファイルが理解できる引数のみを取得することが保証されます。

于 2013-02-27T07:58:49.787 に答える
1

以下を試してください

executeCmd = "<Absolute Path to MYSQL>\bin" + "\\mysqldump -u " + mysqlUser +
    " -p"+DBConfig.dbPass + " " + DBConfig.dbName + 
    " -r --opt > supervisorDbBkup.sql";

アップデート:

-opt は、次の mysqldump のオプションではありません

--opt
于 2013-02-27T07:59:27.843 に答える
0

このコマンドを試してください "C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqldump -u username -pPASS_WORD database_name -r backup.sql"

-u とユーザー名、および -p とパスワードの間のスペースに注意してください (-p とパスワードの間にはスペースを入れないでください)。それは私のために働いた。

于 2013-12-26T18:02:20.137 に答える