首页 > 解决方案 > 无法在 XAMPP 中运行 mysqldump

问题描述

我无法在 xampp 中执行 mysqldump,它显示“系统找不到指定的文件”。我正在使用以下代码:

    public boolean backupDB(String dbName, String dbUserName, String dbPassword, String path) {

        String[] executeCmd = new String[] {
                "mysqldump.exe",
                "-u",
                dbUserName,
                "-p",
                dbPassword,
                "--add-drop-database",
                "-B",
                dbName,
                "-r",
                path
            };

        Process runtimeProcess;
        try {

            File pasta = new File("C:\\xampp\\mysql\\bin");
            runtimeProcess = Runtime.getRuntime().exec(executeCmd, null, pasta);
            int processComplete = runtimeProcess.waitFor();

            if (processComplete == 0) {
                System.out.println("Backup created successfully");
                return true;
            } else {
                System.out.println("Could not create the backup");
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }

        return false;
    }

当我运行它时,我收到以下错误:

    java.io.IOException: Cannot run program "mysqldump.exe" (in directory "C:\xampp\mysql\bin"): CreateProcess error=2, O sistema não pode encontrar o arquivo especificado
        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
        at java.lang.Runtime.exec(Runtime.java:620)
        at xd.test.backupDB(test.java:25)
        at xd.ee.main(ee.java:7)

设置一个是mysqldump,它是正确的扩展类型,它仍然没有找到mysqldump。我尝试了一切,但无法解决这个问题,有什么想法吗?

标签: java

解决方案


改用 ProcessBuilder ,试试这个:

String[] executeCmd = new String[] {
        "C:\\xampp\\mysql\\bin\\mysqldump.exe ",
        "-u ",
        dbUserName,
        "-p ",
        dbPassword,
        "--add-drop-database ",
        "-B ",
        dbName,
        "-r ",
        path
};

final ProcessBuilder pb = new ProcessBuilder(Arrays.asList(executeCmd));
final Process p;
try {
    p = pb.start();
    int processComplete = p.waitFor();

    if (processComplete == 0) {
        System.out.println("Backup created successfully");
        return true;
    } else {
        System.out.println("Could not create the backup");
        BufferedReader reader = new BufferedReader(new InputStreamReader(p.getErrorStream()));
        String line = null;
        while ( (line = reader.readLine()) != null) {
            System.out.println(line);
        }
    }
} catch (IOException | InterruptedException e) {
    e.printStackTrace();
}

推荐阅读