Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中的mysql转储不工作_Java_Mysql - Fatal编程技术网

java中的mysql转储不工作

java中的mysql转储不工作,java,mysql,Java,Mysql,我正在用java尝试这个命令 executeCmd = DBConfig.dbLocation + "\\mysqldump -u " + mysqlUser + " -p"+DBConfig.dbPass + " " + DBConfig.dbName + " -r -opt>supervisorDbBkup.sql"; 它给了我代码1而不是0 String executeCmd = ""; executeCmd = DBConfig.

我正在用java尝试这个命令

executeCmd = DBConfig.dbLocation + "\\mysqldump -u " + mysqlUser +
    " -p"+DBConfig.dbPass + " " + DBConfig.dbName + 
    " -r -opt>supervisorDbBkup.sql";
它给了我代码1而不是0

            String executeCmd = "";
    executeCmd = DBConfig.dbLocation+"\\mysqldump -u"+mysqlUser+
            " -p"+DBConfig.dbPass+" "+DBConfig.dbName+" -r -opt>supervisorDbBkup.sql";

    Process runtimeProcess =Runtime.getRuntime().exec(executeCmd);
    int processComplete = runtimeProcess.waitFor();
    if(processComplete == 0){
        return "Backup taken successfully";
    } else {
        return "Could not take mysql backup";
    }

这是我正在运行的命令:

                E:\program file\MySQL\MySQL Server 5.5\bin\mysqldump -uroot -p0502 dashboardsupervisor -r -opt>supervisorDbBkup.sql

任何想法

您需要做的是在构建后打印出
executeCmd
的内容,查看其中包含的内容,例如:

Console.Out.WriteLine (executeCmd);
String[] cmd = {"/bin/sh", "-c", "/path/to/mysqldump blah blah >/tmp/tempout"};
Process p = Runtime.getRuntime().exec(cmd);
如果该命令在命令行中的工作方式与您构建的不完全相同,那么它不太可能在您的程序中工作。复制并粘贴与输出完全相同的命令,并尝试从
cmd
shell执行该命令

我怀疑您的问题在于可执行文件的路径或其中一个选项

如果不是这样,您需要注意重定向。重定向是一种shell功能,可能无法用于
Runtime.exec()
调用。您会发现重定向位作为参数传递给
mysqldump
execuable,它根本不理解它

通常的方法是使用参数调用shell本身,告诉它如何正确运行命令和重定向,例如:

Console.Out.WriteLine (executeCmd);
String[] cmd = {"/bin/sh", "-c", "/path/to/mysqldump blah blah >/tmp/tempout"};
Process p = Runtime.getRuntime().exec(cmd);
(或适用于Windows的等效
cmd/c


这可以确保重定向得到正确处理(由shell本身处理),并且可执行文件仅获取它理解的参数。

您需要做的是在构建后打印出
executeCmd
的内容,以查看它包含的内容,例如:

Console.Out.WriteLine (executeCmd);
String[] cmd = {"/bin/sh", "-c", "/path/to/mysqldump blah blah >/tmp/tempout"};
Process p = Runtime.getRuntime().exec(cmd);
如果该命令在命令行中的工作方式与您构建的不完全相同,那么它不太可能在您的程序中工作。复制并粘贴与输出完全相同的命令,并尝试从
cmd
shell执行该命令

我怀疑您的问题在于可执行文件的路径或其中一个选项

如果不是这样,您需要注意重定向。重定向是一种shell功能,可能无法用于
Runtime.exec()
调用。您会发现重定向位作为参数传递给
mysqldump
execuable,它根本不理解它

通常的方法是使用参数调用shell本身,告诉它如何正确运行命令和重定向,例如:

Console.Out.WriteLine (executeCmd);
String[] cmd = {"/bin/sh", "-c", "/path/to/mysqldump blah blah >/tmp/tempout"};
Process p = Runtime.getRuntime().exec(cmd);
(或适用于Windows的等效
cmd/c

这可以确保重定向得到正确处理(由shell本身处理),并且可执行文件仅获取它理解的参数。

请尝试以下操作

executeCmd = "<Absolute Path to MYSQL>\bin" + "\\mysqldump -u " + mysqlUser +
    " -p"+DBConfig.dbPass + " " + DBConfig.dbName + 
    " -r --opt > supervisorDbBkup.sql";
试试下面的方法

executeCmd = "<Absolute Path to MYSQL>\bin" + "\\mysqldump -u " + mysqlUser +
    " -p"+DBConfig.dbPass + " " + DBConfig.dbName + 
    " -r --opt > supervisorDbBkup.sql";
请尝试使用此命令 “C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqldump-u username-pPASS\u WORD database\u name-r backup.sql”

注意-u和username以及-p和password之间的空格(在-p和password之间应该没有空格)。 它对我有效。

尝试使用此命令 “C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqldump-u username-pPASS\u WORD database\u name-r backup.sql”

注意-u和username以及-p和password之间的空格(在-p和password之间应该没有空格)。

它对我有用。

你使用哪种操作系统?显示如何使用执行
executeCmd
。win7,我已将上面的代码粘贴到DBConfig.dbLocation是否指向MYSQL\u HOME/bin?是的,其:公共静态字符串dbLocation=“E:\\program file\\MYSQL\\MYSQL Server 5.5\\bin”;这是我正在运行的命令:E:\program file\MySQL\MySQL Server 5.5\bin\mysqldump-uroot-p0502 dashboardsupervisor-r-opt>SupervisorDBKUP.sqls您使用哪个操作系统?显示如何使用执行
executeCmd
。win7,我已将上面的代码粘贴到DBConfig.dbLocation是否指向MYSQL\u HOME/bin?是的,其:公共静态字符串dbLocation=“E:\\program file\\MYSQL\\MYSQL Server 5.5\\bin”;这是我正在运行的命令:E:\program file\MySQL\MySQL Server 5.5\bin\mysqldump-uroot-p0502 dashboardsupervisor-r-opt>SupervisorDBKUP.sqlbin之前是否有一个\before-bin??使用runtimeProcess.getInputStream()打印runtimeProcess的输出;为了更好地理解例外情况,是否会有一个\before bin??使用runtimeProcess.getInputStream()打印runtimeProcess的输出;为了更好地理解例外情况,如果我在shell中运行相同的命令,它就可以正常工作。。它在bin文件夹中创建一个新文件,在java中,我希望它将新文件保存在war文件夹中..这就是我得到的:java.io.IOException:无法运行程序“E:/program file/MySQL/MySQL Server 5.5/bin/sh”:CreateProcess error=2,系统无法找到使用此代码的文件指定编辑器:String executeCmd=“”;executeCmd=“mysqldump-u”+dbUser+“-p”+dbPass+“”+dbName+“-r backup.sql”;如果我在shell中运行相同的命令,它就可以正常工作。。它在bin文件夹中创建一个新文件,在java中,我希望它将新文件保存在war文件夹中..这就是我得到的:java.io.IOException:无法运行程序“E:/program file/MySQL/MySQL Server 5.5/bin/sh”:CreateProcess error=2,系统无法找到使用此代码的文件指定编辑器:String executeCmd=“”;executeCmd=“mysqldump-u”+dbUser+“-p”+dbPass+“”+dbName+“-r backup.sql”;