[英]Stuck on using java runtime backup and restore mysql
我正在使用 java RunTime 執行 mysql 命令來備份和恢復數據庫,但它無法正常工作。
我的環境:Mac OS Big Sur,arm64,Java 8
起初,我使用
String command = "mysqldump -uxxx -pxxx myDataBase > /myFolder/backup.sql"
Runtime.getRuntime().exec(Command);
嘗試備份數據庫,但命令中的“>”似乎有問題
所以我改為
String command = "mysqldump -uxxx -pxxx myDataBase -r /myFolder/backup.sql"
Runtime.getRuntime().exec(Command);
它正在工作
然后我嘗試從 this.sql 文件中恢復
String command = "mysql -uxxx -pxxx -r myDataBase < /myFolder/backup.sql"
Runtime.getRuntime().exec(Command);
沒有錯誤報告,但它沒有恢復數據庫。 我在終端中運行這個命令,它只是工作。
我認為這可能是“<”問題,所以我將代碼更改為
String[] command = {"/bin/bash", "-c" , "mysql -uxxx -pxxx -r myDataBase < /myFolder/backup.sql"}
Runtime.getRuntime().exec(Command);
盡管如此,沒有錯誤但不起作用,我嘗試在終端中運行此命令,但出現錯誤:
/bin/bash -c /opt/homebrew/opt/mysql@5.7/bin/mysql -uxxx -pxxx
ERROR 1045 (28000): Access denied for user 'xxxxx'@'localhost' (using password: NO)
現在我完全糊塗了,為什么我在使用“-pxxx”時得到“(使用密碼:NO)”?
謝謝你的幫助!
我想通了,只需使用
ProcessBuilder pb=new ProcessBuilder("/bin/zsh","-c","mysql -uxxx -pxxx -r -vvv myDataBase < xxxx/backup.sql");
pb.redirectOutput(new File("xxxx/log.txt"));
Process p = pb.start();
我仍然不知道造成這種情況的確切原因,但它只是工作,我必須做進一步的工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.