# Restore Dantenbank



## amjed (12. Mai 2009)

Hallo,
ich versuche eine Resotre Funktion mit java zu schreiben, die eine MySQL Datenbank restoriert und es geht leider nicht. Mein Quellcode sieht wie folgt aus:


```
public void importDB(String ImportFile)
	{
		Runtime run = Runtime.getRuntime();
		
		try 
		{
			Process child = run.exec("mysql  -h localhost -u root "+this.getDbName()+" < TestDump.dump");
			
			
		}catch (Exception ex)
		{
			System.out.println(ex);
		}
					
	}
```

Wenn ich das Kommando in shell ausführe dann funktionniert ganz gut. Es muss aber bei über Java funktionnieren. Hat jemand eine Idee?

Danke


----------



## SlaterB (12. Mai 2009)

ist das unter Windows?, 
hast du da vorher schon einen einfacheren Befehl wie 'dir' oder 'edit.exe' ausprobiert?
evtl. fehlt 'cmd /c'

windows java process cmd /c - Google-Suche


----------



## homer65 (12. Mai 2009)

Ich mache das per ProcessBuilder:

```
String cmd = Parameter.mysql;
			String arg1 = "-h" + Parameter.host;
			String arg2 = "-u" + Parameter.user;
			String arg3 = "-p" + Parameter.passwort;
			String arg4 = "-e";
			String arg5 = "source " + pfad;
			String arg6 = db;
			ArrayList<String> al = new ArrayList<String>();
			al.add(cmd);
			al.add(arg1);
			al.add(arg2);
			al.add(arg3);
			al.add(arg4);
			al.add(arg5);
			al.add(arg6);
		ProcessBuilder pb = new ProcessBuilder(al);
		Process P = pb.start();
```


----------



## amjed (12. Mai 2009)

SlaterB hat gesagt.:


> ist das unter Windows?,
> hast du da vorher schon einen einfacheren Befehl wie 'dir' oder 'edit.exe' ausprobiert?
> evtl. fehlt 'cmd /c'
> 
> windows java process cmd /c - Google-Suche




nein das ist unter linux. Mit anderen Befehlen funktionniert das ohne problem.


----------



## amjed (13. Mai 2009)

homer65 hat gesagt.:


> Ich mache das per ProcessBuilder:
> 
> ```
> String cmd = Parameter.mysql;
> ...



hast du schon mit dieser methode probiert? ich habe es gerade probiert und es klappt auch nicht.


----------



## tfa (13. Mai 2009)

Wahrscheinlich liegt's an der stdin-Umleitung. Mach mal ein Shellskript draus und ruf das auf.


----------



## homer65 (13. Mai 2009)

amjed hat gesagt.:


> hast du schon mit dieser methode probiert? ich habe es gerade probiert und es klappt auch nicht.


Ja das mache ich sehr häufig. Ich habe vor ein paar Jahren damit angefangen ein Backup Programm für MySQL zu programmieren. Mittlerweile bin ich bei Version 0.53. Das Tool funktioniert bei mir recht gut. Wenn du Interesse hast kann ich dir den kompletten Source schicken.


----------



## amjed (13. Mai 2009)

homer65 hat gesagt.:


> Ja das mache ich sehr häufig. Ich habe vor ein paar Jahren damit angefangen ein Backup Programm für MySQL zu programmieren. Mittlerweile bin ich bei Version 0.53. Das Tool funktioniert bei mir recht gut. Wenn du Interesse hast kann ich dir den kompletten Source schicken.




Ja das wäre nett 

Ich glaube, jetzt versucht das System den Befehl auszurühren, aber da gibt es ein anderes Problem; es spuckt das folgende Exception:

java.io.IOException: Cannot run program "mysql ": java.io.IOException: error=13, Permission denied

Soll ich die permissions von der Datei mysql per chmod ändern damit es funktionniert?


----------



## homer65 (13. Mai 2009)

amjed hat gesagt.:


> Ja das wäre nett


Dann gibt mir doch deine EMail Adresse. Ab besten per PN.


----------

