使用 mysqldump 从 Java 备份 mysql 数据库失败
Posted
技术标签:
【中文标题】使用 mysqldump 从 Java 备份 mysql 数据库失败【英文标题】:Backup mysql database from Java using mysqldump failed 【发布时间】:2021-09-12 16:36:45 【问题描述】:我正在使用这样的mysqldump:
Runtime.getRuntime().exec("mysqldump -u USERNAME -pPASSWORD DBNAME > /path/to/location/backup.sql");
为了将它转储到我的本地文件中,我的 java 程序是使用 kubernetes 部署的。 这是我的代码:
@RequestMapping(value = "/testDumping", method = RequestMethod.POST, RequestMethod.GET)
public Object test(@RequestBody Map<String,Object> params) throws IOException
String runStatement = (String)params.get("runStatement");
Runtime runtime = Runtime.getRuntime();
Process exec = runtime.exec(runStatement);
return exec;
我终于得到了这个异常“java.io.IOException:无法运行程序“mysqldump”:错误= 2,没有这样的文件或目录”。这里有什么问题?
【问题讨论】:
您好,能否请您也发布错误日志? 您好,我刚刚完成了帖子。 【参考方案1】:错误消息准确地告诉您问题所在:
java.io.IOException:无法运行程序“mysqldump”:错误=2,没有这样的文件或目录
这意味着 shell 无法找到“mysqldump”的可执行文件。尝试在你的命令中给出 mysqldump 的整个绝对路径,例如(假设类 linux 系统):
Runtime.getRuntime().exec("/usr/bin/mysqldump -u USERNAME -p PASSWORD DBNAME > /path/to/location/backup.sql");
Linux 上的确切路径通常可以使用命令which mysqldump
找到
您也可以将此路径添加到您的 PATH 环境变量中,并保持您的命令不变(不是 100% 确定这一点,因为我通常在 Windows 上工作并且远非 Linux 专家)。
【讨论】:
您好,我尝试将绝对路径添加到命令中,但随后出现此错误“mysqldump: Got error: 2002: Can't connect to local MySQL server through socket '/tmp/mysql.sock ' (2) 尝试连接时"。 这意味着你前进了一步。现在是使用正确的命令行配置 mysqldump 的问题,在其中我大多不合格......对不起(您现在实际上正在调用 mysqldump,但连接详细信息错误。检查套接字/主机/端口/用户/密码)以上是关于使用 mysqldump 从 Java 备份 mysql 数据库失败的主要内容,如果未能解决你的问题,请参考以下文章