簡體   English   中英

在Java上備份mysql數據庫

[英]back-up mysql database on java

我試圖從我的Java應用程序(使用wamp服務器)備份mysql數據庫,但是它不起作用,它總是顯示消息“無法創建備份”。 這是我從此線程獲取的代碼: 在Java中備份mysql [xampp]數據庫

    public static void saveBdd(){
         String path = null;
         String user = "root";
         Process p = null;


         JFileChooser fc = new JFileChooser();
         fc.setDialogTitle("Choisir l'emplacement de la sauvegarde");
         fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
         fc.setAcceptAllFileFilterUsed(false);
         fc.showOpenDialog(startPage);
         String date = new SimpleDateFormat("dd-MM-yyyy").format(new Date());

        try {
            File f = fc.getSelectedFile();
            path = f.getAbsolutePath();
            path = path.replace('\\', '/');
            path = path+"/bcpbdd_"+date+".sql";


        } catch (Exception e) {
            e.printStackTrace();
        }
        try{
            Runtime runtime = Runtime.getRuntime();

            p=runtime.exec("C:/wamp64/bin/mysql/mysql5.7.23/bin/mysqldump -u " + user + " --add-drop-database -B bcpbdd -r "+path);

            int processComplete = p.waitFor();
            if (processComplete==0) {
                StartPage.afficheMessage("Backup Created Success!");
            } else {
                 StartPage.afficheMessage("Can't create backup.");
            }
        } catch (Exception e) {
            StartPage.afficheMessage(e.getMessage());
        }
    }

您可以使用p.getErrorStream()p.getInputStream()讀取進程的輸出。這應該在新線程中完成,然后可以將輸出寫入日志文件或控制台中。

這是我嘗試過的並且工作正常,

  1. 有關mysqldump命令的更多信息: https : //stackoverflow.com/a/13484728/2987755
  2. 您可以提供要在其中創建備份文件db_backup.sql任何路徑。

     Process rt = Runtime.getRuntime().exec("mysqldump -P 3306 -h 127.0.0.1 -u root test"); int exitCode = rt.waitFor(); System.out.println("Process exited with : " + exitCode); BufferedReader in = new BufferedReader(new InputStreamReader(rt.getInputStream())); BufferedReader err = new BufferedReader(new InputStreamReader(rt.getErrorStream())); System.out.println("Backup file output:"); String line; BufferedReader reader; if (exitCode != 0) { reader = err; } else { reader = in; } File file = new File("db_backup.sql"); BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(file)); while ((line = reader.readLine()) != null) { System.out.println(line); bufferedWriter.write(line); bufferedWriter.newLine(); } bufferedWriter.flush(); bufferedWriter.close(); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM