最近有个新的需求,需要java调用mysql数据库,执行数据库备份操作,
一条mysqldump命令,在windows命令行窗口执行是没问题的,
但是我用java调用一直报错,每次都返回1,很头疼。
程序如下:
System.out.println("**************开始执行mysqldump命令************");
try {
StringBuilder commandStr = new StringBuilder();
commandStr.append("mysqldump -h 127.0.0.1 -uroot -p123456 testbase >C:\\Users\\dumpdata.sql");
System.out.println("当前执行的命令为:" + commandStr.toString());
String[] command = {"cmd", "/c", commandStr.toString()};
Process process = Runtime.getRuntime().exec(command);
System.out.println("mysqldump命令===" + process.waitFor());
} catch (Exception e) {
e.printStackTrace();
System.out.println("mysqldump命令执行报错...");
}
System.out.println("**************mysqldump命令执行完成************");
执行结果如下:
**************开始执行mysqldump命令************
当前执行的命令为:mysqldump -h 127.0.0.1 -uroot -p123456 testbase >C:\Users\dumpdata.sql
mysqldump命令===1
**************mysqldump命令执行完成************
希望帮忙解决下
解决了吗,到底什么问题,我现在也出现了,不过我用的是mysql命令:/usr/bin/mysql -h10.130.141.38 -P3306 -uroot -pTempPass1234_ maxusdb_t70 -f --default-character-set=utf8 -e "source /app/databaseBackUp/20201110160731tb_family.sql"
java执行报错情况:命令行执行没问题,求大师指点
有可能是管理员权限问题,你用nircmd试试,我之前也遇到类似的问题,用cmd黑窗口能正常执行,在java代码里就有问题,换成nircmd就没问题了
刚刚看到一个问题解答,字符串里的大于号“>”需要转译。
具体报什么错误信息,可以加上以下代码:
//输出错误信息
FileInputStream errorStream = (FileInputStream)process.getErrorStream();
InputStreamReader isr = new InputStreamReader(errorStream,"gbk");//读取
System.out.println(isr.getEncoding());
BufferedReader bufr = new BufferedReader(isr);//缓冲
String line = null;
while((line =bufr.readLine())!=null) {
System.out.println("error:"+line);
}
isr.close();