备份mysql数据库java代码 [英] backup mysql database java code

查看:406
本文介绍了备份mysql数据库java代码的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试运行以下代码,即创建数据库备份,但显示一些运行时错误。



但是,我试图运行 System.out.println()输出部分,(我在给定的代码中注释)在mysql shell和它工作

它显示io文件问题。有人帮我。

 包文件; 

public class tableBackup_1 {

public boolean tbBackup(String dbName,String dbUserName,String dbPassword,String path){

String executeCmd =mysqldump -u+ dbUserName +-p+ dbPassword +--add-drop-database -B+ dbName +-r+ path;
进程运行时进程;
try
{
System.out.println(executeCmd); //此输出在mysql shell中有效
runtimeProcess = Runtime.getRuntime()。exec(executeCmd);
int processComplete = runtimeProcess.waitFor();

if(processComplete == 0)
{
System.out.println(备份已成功创建);
return true;
}
else
{
System.out.println(无法创建备份);
}
} catch(Exception ex)
{
ex.printStackTrace();
}
return false;
}

public static void main(String [] args){

tableBackup_1 bb = new tableBackup_1();
bb.tbBackup(test,harin,1234,C:/Users/Master/Downloads/123.sql);

}
}





  mysqldump -u harin -p1234 --add-drop-database -B test -r C:/Users/Master/Downloads/123.sql 
java.io.IOException:无法运行程序mysqldump:CreateProcess error = 2,系统找不到指定的文件
在java.lang.ProcessBuilder.start(ProcessBuilder.java:460)
在java.lang.Runtime.exec (Runtime.java:593)
at java.lang.Runtime.exec(Runtime.java:431)
at java.lang.Runtime.exec(Runtime.java:328)
at files.tableBackup_1.tbBackup(tableBackup_1.java:12)
at files.tableBackup_1.main(tableBackup_1.java:34)
原因:java.io.IOException:CreateProcess error = 2,系统不能找到指定的文件
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl。< init>(ProcessImpl.java:81)
at java.lang .ProcessImpl.start(ProcessImpl.java:30)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:453)
... 5


解决方案

请检查您的全局PATH环境变量是否具有< MySQL的路径\\ a echo%PATH%并参见)。有效地,你应该能够在纯DOS提示符下输入System.out.println()内容,并且应该能够运行它。



即使如此, 't work尝试改变代码执行如下

  runtimeProcess = Runtime.getRuntime cmd.exe,/ c,executeCmd}); 

这应该能解决问题。



UPDATE:



如果您在PATH环境变量中没有,请将代码更改为

  String executeCmd = / bin / mysqldump -u+ dbUserName +-p+ dbPassword +--add-drop-数据库-B+ dbName +-r+路径; 


I tried to run the following code which is to create a backup of my database but it shows some run time errors.

But, I tried to run the System.out.println() output part, (which I've commented in the given code) in mysql shell and it worked.

It shows io file problem. Plz somebody help me.

package files;

 public class tableBackup_1 {

public boolean tbBackup(String dbName,String dbUserName, String dbPassword, String path) {

    String executeCmd = "mysqldump -u " + dbUserName + " -p" + dbPassword + " --add-drop-database -B " + dbName + " -r " + path;
    Process runtimeProcess;
        try
        {
            System.out.println(executeCmd);//this out put works in mysql shell
            runtimeProcess = Runtime.getRuntime().exec(executeCmd);
            int processComplete = runtimeProcess.waitFor();

                if (processComplete == 0)
                {
                    System.out.println("Backup created successfully");
                    return true;
                }
                else
                {
                    System.out.println("Could not create the backup");
                }
        } catch (Exception ex)
        {
            ex.printStackTrace();
        }
return false;
}

public static void main(String[] args){

        tableBackup_1 bb = new tableBackup_1();
        bb.tbBackup("test","harin","1234","C:/Users/Master/Downloads/123.sql");

}
}

    mysqldump -u harin -p1234 --add-drop-database -B test -r C:/Users/Master/Downloads/123.sql
java.io.IOException: Cannot run program "mysqldump": CreateProcess error=2, The system cannot find the file specified
        at java.lang.ProcessBuilder.start(ProcessBuilder.java:460)
        at java.lang.Runtime.exec(Runtime.java:593)
        at java.lang.Runtime.exec(Runtime.java:431)
        at java.lang.Runtime.exec(Runtime.java:328)
        at files.tableBackup_1.tbBackup(tableBackup_1.java:12)
        at files.tableBackup_1.main(tableBackup_1.java:34)
Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified
        at java.lang.ProcessImpl.create(Native Method)
        at java.lang.ProcessImpl.<init>(ProcessImpl.java:81)
        at java.lang.ProcessImpl.start(ProcessImpl.java:30)
        at java.lang.ProcessBuilder.start(ProcessBuilder.java:453)
        ... 5 more

解决方案

Please check whether your Global PATH environment variable has <Path to MySQL>\bin in it (Do a echo %PATH% and see). Effectively you should be able to type your System.out.println() content in a Plain DOS prompt and should be able to run it.

Even with that if it doesn't work try changing the code to execute like below

runtimeProcess = Runtime.getRuntime().exec(new String[] { "cmd.exe", "/c", executeCmd });

This should ideally fix the issue.

UPDATE:

If you don't have it in the PATH environment variable change the code to following

String executeCmd = "<Path to MySQL>/bin/mysqldump -u " + dbUserName + " -p" + dbPassword + " --add-drop-database -B " + dbName + " -r " + path;

这篇关于备份mysql数据库java代码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆