在java中备份一个mysql [xampp]数据库
Posted
技术标签:
【中文标题】在java中备份一个mysql [xampp]数据库【英文标题】:Backup a mysql [xampp] database in java 【发布时间】:2018-05-21 20:08:11 【问题描述】:所以我还在学习编程,我正在创建一个可以备份数据库的简单应用程序,但问题是当我单击备份按钮时,没有任何反应,甚至没有显示“无法创建备份”。我正在使用 xampp,以防万一。我对它为什么不起作用的想法为零,我真的很好奇它背后的原因是什么,任何帮助将不胜感激。
...
String path = null;
String filename;
//choose where to backup
private void jButtonLocationActionPerformed(java.awt.event.ActionEvent evt)
JFileChooser fc = new JFileChooser();
fc.showOpenDialog(this);
String date = new SimpleDateFormat("MM-dd-yyy").format(new Date());
try
File f = fc.getSelectedFile();
path = f.getAbsolutePath();
path = path.replace('\\', '/');
path = path+"_"+date+".sql";
jTextField1.setText(path);
catch (Exception e)
e.printStackTrace();
//backup
private void jButtonBackUpActionPerformed(java.awt.event.ActionEvent evt)
Process p = null;
try
Runtime runtime = Runtime.getRuntime();
p=runtime.exec("C:/xampp/mysq/bin/mysqldump -u root --add-drop-database -B capstone -r "+path);
int processComplete = p.waitFor();
if (processComplete==0)
jLabel1.setText("Backup Created Success!");
else
jLabel1.setText("Can't create backup.");
catch (Exception e)
【问题讨论】:
您的操作似乎没有绑定任何东西... 【参考方案1】:您在jButtonBackUpActionPerformed
中使用了try-catch
块,但catch 语句为空。因此,如果由于某种原因引发异常,则不会写入任何文件,也不会得到任何输出。您可以尝试使用e.printStackTrace()
就像在另一个按钮的catch
语句中一样进行调试。
【讨论】:
【参考方案2】:感谢 stan,我找到了根本问题。这是一个错字的问题,而不是“mysql”,我放了“mysq”谢谢你们!
java.io.IOException: Cannot run program "C:/xampp/mysq/bin/mysqldump.exe": CreateProcess error=2, The system cannot find the file specified
【讨论】:
【参考方案3】:这将在 Linux 服务器上运行任何 shell 脚本。在 Windows 上测试它......应该也可以工作
public static int executeExternalScript(String path) throws InterruptedException, IOException
ProcessBuilder procBuilder = new ProcessBuilder(path);
procBuilder.redirectErrorStream(true);
Process process = procBuilder.start();
BufferedReader brStdout = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line = null;
while((line = brStdout.readLine()) != null) logger.info(line);
int exitVal = process.waitFor();
brStdout.close();
return exitVal;
【讨论】:
以上是关于在java中备份一个mysql [xampp]数据库的主要内容,如果未能解决你的问题,请参考以下文章