【问题标题】:Backup a mysql [xampp] database in java在java中备份一个mysql [xampp]数据库
【发布时间】: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) {

    }


} 

【问题讨论】:

  • 您的操作似乎没有绑定任何东西...

标签: java mysql xampp


【解决方案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;}
      

      【讨论】:

        猜你喜欢
        • 2015-06-13
        • 2019-07-14
        • 2011-01-14
        • 1970-01-01
        • 1970-01-01
        • 2015-11-07
        • 1970-01-01
        • 1970-01-01
        • 2012-10-28
        相关资源
        最近更新 更多