【问题标题】:Backup mysql database from Java using mysqldump failed使用 mysqldump 从 Java 备份 mysql 数据库失败
【发布时间】: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,没有这样的文件或目录”。这里有什么问题?

【问题讨论】:

  • 您好,能否请您也发布错误日志?
  • 您好,我刚刚完成了帖子。

标签: java mysql database spring-boot database-backups


【解决方案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,但连接详细信息错误。检查套接字/主机/端口/用户/密码)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-25
  • 1970-01-01
  • 2011-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多