Java中CMD命令来备份mysql数据库备份文件出来为0字节问题

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: Java中CMD命令来备份mysql数据库备份文件出来为0字节问题
Java中CMD命令来备份mysql数据库备份文件出来为0字节问题
https://blog.csdn.net/qq_36936155/article/details/78978242
今天客户打电话来说我们的系统备份的sql文件为空文件。
这让我很凌乱,我们测试过滴,执行很成功嘛。
可客户使用的时候确实是备份失败嘛 ,这是事实。
我东测试西测试,在本机咋滴还是没出现这样的问题;
没办法装了个虚拟机,安装了和客户一样的操作系统 ,并且按照客户安装步骤进行部署。
结果,神奇事情出现了,所备份的数据库文件确实是空的,最后是东找西找,又是百度又是谷歌的,还是没有解决。
后来我一想,mysql的安装路径不一样,我都喜欢把软件工具都安装在C盘以外,自定义的安装路径,而客户是安装在默认的Program Files下面,
而文件夹有空格的名称的经常会致使一些莫名其妙的问题出现。
想到就做,我将mysql bin目录下的mysqldump复制放到c盘,并且把系统语句改为
Runtime rt = Runtime.getRuntime();
rt.exec("cmd /c c:\\mysqldump -hlocalhost -uroot -p123456 --opt databaseName>d:\\bk.sql");
居然成功了,文件不再是0KB的空文件。自此,问题解决。
罪魁祸首是Program Files文件夹的空字符串,不知道当初微软为啥要在中间加个空格。
我项目的解决方案就是(项目 fhadmin.cn):
1、将mysqldump.exe复制放到我的项目文件夹下
2、执行备份时,先得到项目部署路径,然后执行 
Runtime rt = Runtime.getRuntime();
String path = 获取mysqldump所在路径。 
rt.exec("cmd /c "+path+"\\mysqldump -hlocalhost -uroot -p123456 --opt databaseName>d:\\bk.sql"); 
3、前提是让客户部署时,别将项目部署在含有空格的文件夹下面。
记录下问题的解决方法以供参考。 
今天客户打电话来说我们的系统备份的sql文件为空文件。
这让我很凌乱,我们测试过滴,执行很成功嘛。
可客户使用的时候确实是备份失败嘛 ,这是事实。
我东测试西测试,在本机咋滴还是没出现这样的问题;
没办法装了个虚拟机,安装了和客户一样的操作系统 ,并且按照客户安装步骤进行部署。
结果,神奇事情出现了,所备份的数据库文件确实是空的,最后是东找西找,又是百度又是谷歌的,还是没有解决。
后来我一想,mysql的安装路径不一样,我都喜欢把软件工具都安装在C盘以外,自定义的安装路径,而客户是安装在默认的Program Files下面,
而文件夹有空格的名称的经常会致使一些莫名其妙的问题出现。
想到就做,我将mysql bin目录下的mysqldump复制放到c盘,并且把系统语句改为
Runtime rt = Runtime.getRuntime();
rt.exec("cmd /c c:\\mysqldump -hlocalhost -uroot -p123456 --opt databaseName>d:\\bk.sql");
居然成功了,文件不再是0KB的空文件。自此,问题解决。
罪魁祸首是Program Files文件夹的空字符串,不知道当初微软为啥要在中间加个空格。
我项目的解决方案就是:
1、将mysqldump.exe复制放到我的项目文件夹下
2、执行备份时,先得到项目部署路径,然后执行 
Runtime rt = Runtime.getRuntime();
String path = 获取mysqldump所在路径。 
rt.exec("cmd /c "+path+"\\mysqldump -hlocalhost -uroot -p123456 --opt databaseName>d:\\bk.sql"); 
3、前提是让客户部署时,别将项目部署在含有空格的文件夹下面。
记录下问题的解决方法以供参考。

 

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1天前
|
Java 关系型数据库 MySQL
如何用java的虚拟线程连接数据库
本文介绍了如何使用Java虚拟线程连接数据库,包括设置JDK版本、创建虚拟线程的方法和使用虚拟线程连接MySQL数据库的示例代码。
14 6
如何用java的虚拟线程连接数据库
|
1天前
|
关系型数据库 MySQL Java
java协程操作mysql数据库
本文介绍了如何在Java项目中使用虚拟线程和协程操作MySQL数据库,并通过代码示例展示了如何利用CompletableFuture实现非阻塞数据库连接和操作。
11 2
java协程操作mysql数据库
|
1天前
|
Java
用java搞定时任务,将hashmap里面的值存到文件里面去
本文介绍了如何使用Java的`Timer`和`TimerTask`类创建一个定时任务,将HashMap中的键值对写入到文本文件中,并提供了完整的示例代码。
7 1
用java搞定时任务,将hashmap里面的值存到文件里面去
|
1天前
|
SQL 关系型数据库 MySQL
|
1天前
|
Java
利用GraalVM将java文件变成exe可执行文件
这篇文章简明地介绍了如何使用GraalVM将一个简单的Java程序编译成exe可执行文件,首先通过javac命令编译Java文件生成class文件,然后使用native-image命令将class文件转换成独立的exe文件,并展示了如何运行这个exe文件。
6 0
利用GraalVM将java文件变成exe可执行文件
|
2天前
|
存储 前端开发 Java
Java后端如何进行文件上传和下载 —— 本地版(文末配绝对能用的源码,超详细,超好用,一看就懂,博主在线解答) 文件如何预览和下载?(超简单教程)
本文详细介绍了在Java后端进行文件上传和下载的实现方法,包括文件上传保存到本地的完整流程、文件下载的代码实现,以及如何处理文件预览、下载大小限制和运行失败的问题,并提供了完整的代码示例。
38 1
|
2天前
|
安全 算法 Java
数据库信息/密码加盐加密 —— Java代码手写+集成两种方式,手把手教学!保证能用!
本文提供了在数据库中对密码等敏感信息进行加盐加密的详细教程,包括手写MD5加密算法和使用Spring Security的BCryptPasswordEncoder进行加密,并强调了使用BCryptPasswordEncoder时需要注意的Spring Security配置问题。
20 0
数据库信息/密码加盐加密 —— Java代码手写+集成两种方式,手把手教学!保证能用!
|
20小时前
|
存储 Java 程序员
【Java】文件IO
【Java】文件IO
8 0
|
1天前
|
Java Maven Spring
用Spring导致的无法运行Java文件的问题的解决方案
本文提供了解决在IntelliJ IDEA社区版中使用Spring Initializr插件创建Spring项目后,Java文件无法运行的问题的方法,主要是通过加载Maven项目来解决。
10 0
|
1天前
|
存储 NoSQL Java
使用 Java 了解和学习 NoSQL 数据库:三个主要优势
使用 Java 了解和学习 NoSQL 数据库:三个主要优势
5 0

热门文章

最新文章