MysqlDump を使用して Java で MySQL DB バックアップを作成する際に奇妙な問題に直面しています。Windowsのコマンドプロンプトでコマンドを実行すると、問題なく簡単に実行され、バックアップが作成されますが、Javaアプリケーションからコマンドを実行するとエラーが発生します。私の命令は
c:/xampp/mysql/bin/mysqldump -h localhost –-user root –-password=abc --add-drop-database -B db_WebBe -r db_test.sql
MySQLユーザーのこのエラーが発生します
mysqldump: エラーが発生しました: 1044: データベースの選択時に、データベース '?-user' へのユーザー ''@'localhost' のアクセスが拒否されました
私は私ができるすべての愚かなことを試しました
1) allow all the rights to ''@localhost
2) deleted user ''@localhost and then got error with 'jdbc'@localhost
3) Tried to Run Java Application with Administartor Rights (Stupid)
4) Some other codes from StackOverflow guides but all returned same error
5) Changed root password
6) Reinstalled, Updated ODBC and JDBC Drivers
6) and many others don't remember :-/
理解のための私のコードは
public boolean databaseBackup()
{
try
{
CreateConnection();
Process runtimeProcess;
runtimeProcess = Runtime.getRuntime().exec("c:/xampp/mysql/bin/mysqldump -h localhost –-user root –-password=abc --add-drop-database -B db_poonawala -r db_test.sql");
BufferedReader stdInput = new BufferedReader(new
InputStreamReader(runtimeProcess.getInputStream()));
BufferedReader stdError = new BufferedReader(new
InputStreamReader(runtimeProcess.getErrorStream()));
String s=null;
try {
while ((s = stdInput.readLine()) != null) {
System.out.println(s);
}
} catch (IOException ex) {
Logger.getLogger(MainFrame.class.getName()).log(Level.SEVERE, null, ex);
}
try {
while ((s = stdError.readLine()) != null) {
System.out.println(s);
}
} catch (IOException ex) {
Logger.getLogger(MainFrame.class.getName()).log(Level.SEVERE, null, ex);
}
int processComplete = runtimeProcess.waitFor();
if (processComplete == 0) {
System.out.println("5");
System.out.println("Backed up");
return true;
} else {
System.out.println("Not Backed up");
}
conn.close();
}
catch (Exception ex)
{
ex.printStackTrace();
}
return false;
}