cmd命令行窗口执行mysqldump没问题,java 执行mysqldump同一条命令就行不行,一直返回1

最近有个新的需求,需要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命令执行完成************

希望帮忙解决下

2个回答

有可能是管理员权限问题,你用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();
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问