首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >MySql备份不工作

MySql备份不工作
EN

Stack Overflow用户
提问于 2012-09-28 12:14:38
回答 3查看 318关注 0票数 1
代码语言:javascript
复制
String[] executeCmd = new String[] { "mysql", "-u",DB_USER,"-p"+DB_PASSWORD,DB_NAME, " < ", "\""+FileName+"\"" };

Process runtimeProcess = Runtime.getRuntime().exec(executeCmd);
int processComplete = runtimeProcess.waitFor();
System.out.println("processComplete: " + processComplete);

这是我用过的代码。当调用"waitFor()“方法时,程序挂起。

如何解决这个问题?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-10-01 12:35:06

代码语言:javascript
复制
    String[] command = new String[]{"mysql", Constants.DB_NAME, "-u" + Constants.DB_USER, "-p" + Constants.DB_PASSWORD, "-e", " source "+FileName };

    try {
            Process runtimeProcess = Runtime.getRuntime().exec(command);
            int processComplete = runtimeProcess.waitFor();
            if (processComplete == 0)
            {
                System.out.println("DatabaseManager.restore: Restore Successfull");

            }
            else 
            {
                System.out.println("DatabaseManager.restore: Restore Failure!");
            }

        return true;

    }

    catch (final Exception ex) 
    {
        Application.showErrorInConsole(ex);
        NmsLogger.writeErrorLog("Database Restore failed ", ex.toString());
        NmsLogger.writeDebugLog(ex);
        return false;

    }

上面的代码对我来说工作得很好:)

票数 0
EN

Stack Overflow用户

发布于 2012-09-28 12:16:29

您需要在参数后添加空格,不要使用数组

代码语言:javascript
复制
String executeCmd = "mysqldump ", " -u ",DB_USER," -p " + DB_PASSWORD, + " " + DB_NAME, " < ", "\""+FileName+"\"" ;

更干净的方法是使用String.Format()

代码语言:javascript
复制
String executeCmd = String.Format("mysqldump -u %s -p %s %s < \"%s\"", DB_USER, DB_PASSWORD, DB_NAME, FileName)
票数 5
EN

Stack Overflow用户

发布于 2018-06-06 06:56:59

如果您没有为XAMPP设置密码,请不要使用-p

代码语言:javascript
复制
public class Testbackupmysql {
public boolean tbBackup(String dbName,String dbUserName, String path) {

    String executeCmd = "C:\\xampp\\mysql\\bin\\mysqldump -u " + dbUserName + " --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){

    Testbackupmysql bb = new Testbackupmysql();
        bb.tbBackup("your_database_name","your_db_username","D:\\123.sql");

}

}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12633487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档