用Process process = Runtime.getRuntime().exec(cmd);执行mysqldump的还原命令,程序没报错也没抛异常,但还原不生效,将命令粘贴出来到控制台单独执行就能够生效,process.waitFor()会卡死,process.exitValue()报:process has not exited。
不明白为什么业务层执行命令就不生效。
源码:
```java
//Runtime runtime = Runtime.getRuntime();
// 第一步,获取登录命令语句,指向mysql安装目录
String loginCommand = new StringBuffer().append("mysql -u").append(user).append(" -p").append(password).append(" -h").append(ip)
.append(" -P").append(port).toString();
// 第二步,获取切换数据库到目标数据库的命令语句
String switchCommand = new StringBuffer("use ").append(databaseName).toString();
// 第三步,获取导入的命令语句
String importCommand = new StringBuffer("source ").append(savePath + fileName).toString();
// 需要返回的命令语句数组
String[] commands = new String[] {loginCommand, switchCommand, importCommand};
Process process = Runtime.getRuntime().exec(commands[0]);
//执行了第一条命令以后已经登录到mysql了,所以之后就是利用mysql的命令窗口
//进程执行后面的代码
OutputStream os = process.getOutputStream();
OutputStreamWriter writer = new OutputStreamWriter(os);
//命令1和命令2要放在一起执行
writer.write(commands[1] + "\r\n" + commands[2]);
writer.flush();
writer.close();
os.close();
System.out.println(process.exitValue());
process.destroy();
```