0

我想用java备份mysql数据库。

我想在 mysqldump.exe的位置独立启动mysqldump.exe。要启动 mysqldump.exe,我需要为其编写完整路径:

String executeCmd = "D://mysql-5.6.11-win32/bin/mysqldump -u "

你不知道如何摆脱完整的路径。
也许有一种方法可以获得mysqldump.exe所有连接细节的路径。
您认为如何在不指定完整路径的情况下启动 mysqldump.exe?如果我不能,那么如何在不要求用户手动提供路径的情况下在计算机上获取 mysqldump.exe 的路径。

如果我尝试使用没有 mysqldump.exe 完整路径的 mysqldump,我会收到此异常:

java.io.IOException: Cannot run program "mysqldump": CreateProcess error=2, Íå óäàåòñÿ íàéòè óêàçàííûé ôàéë
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
    at java.lang.Runtime.exec(Runtime.java:615)
    at java.lang.Runtime.exec(Runtime.java:448)
    at java.lang.Runtime.exec(Runtime.java:345)
    at dbViewer.model.ConnectionManager.backupDB(ConnectionManager.java:273)
    at dbViewer.model.ConnectionManager.main(ConnectionManager.java:337)
Caused by: java.io.IOException: CreateProcess error=2, Íå óäàåòñÿ íàéòè óêàçàííûé ôàéë
    at java.lang.ProcessImpl.create(Native Method)
    at java.lang.ProcessImpl.<init>(ProcessImpl.java:189)
    at java.lang.ProcessImpl.start(ProcessImpl.java:133)
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1021)
    ... 5 more

谢谢!

4

1 回答 1

0

您可以定义一个环境变量,例如将其称为 MYSQLDUMP_LOCATION。然后只是参考它。在我的示例中,我定义了一个名为 CMD_LOCATION 的环境变量(请注意,您必须重新启动 Windows,否则将找不到它)。

public static void main(String[] args) {

        Map<String, String> env = System.getenv();

        final String CMD_LOCATION = env.get("CMD_LOCATION"); 

        try {
            Runtime.getRuntime().exec(CMD_LOCATION + System.getProperty("file.separator")+"cmd /c start cmd.exe");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

所以在你的情况下,你必须写

Runtime.getRuntime().exec(MYSQLDUMP_LOCATION + system.getProperty("file.separator")+"mysqldump -u");
于 2013-08-15T10:06:54.730 回答