Restore Dantenbank

Status
Nicht offen für weitere Antworten.

amjed

Mitglied
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:

Java:
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 :)
 

homer65

Top Contributor
Ich mache das per ProcessBuilder:
Code:
			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

Mitglied
Ich mache das per ProcessBuilder:
Code:
			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();

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

tfa

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

homer65

Top Contributor
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

Mitglied
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?
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben