我想用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
谢谢!
答案 0 :(得分: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");