有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java无法在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。我什么都试过了,解决不了这个问题,有什么想法吗


共 (1) 个答案

  1. # 1 楼答案

    请改用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();
    }