解決JAVA調用mysqldump備份數據庫時文件為空的問題


今天客戶打電話來說我們的系統備份的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、前提是讓客戶部署時,別將項目部署在含有空格的文件夾下面。

 

記錄下問題的解決方法以供參考。 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM