الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

Backup&restore Mysql Database

بدأه ylazez في 17 سبتمبر 2008 · 12 رد · 1,174 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

أقوم بعمل برنامج يتطلب منى أخد نسخة احتياطية لقاعدة البيانات

واستعادتها فى وقت لاحق

أريد أن أعرف ما هوا الكود الخاص بأخذ النسخه الاحتياطيه

هل هوا CMD Command

أم SQL Query

بمعنى أصح ما هى الطريقة التى تتبعونها فى أخد نسخة احتياطية واستعادتها؟

مع التطبيق على مثال بسيط لو سمحتم لأنى لم أقم بهذه العملية من قبل وأريد فهمها جيدا

أستخدم Wamp Server 2

جزاكم الله ألف خير

تم تعديل هذه المشاركة بواسطة ylazez في 17 سبتمبر 2008 في 23:10

#2

هذا سؤال ماي سقول اكثر من كونه جافا .

نفذ امر الباكب في التيرمنال عندك (عن طريق المثد exec ) ومن ثم احفظها

#3

عيسى لما لا تنقل الموضوع إلى قسم قواعد البيانات

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#4

هل هناك مثال بسيط لو سمحتم؟

#5

فى المثالين التاليين عندما أقوم بأخذ نسخة الباك أب فإنه يصنع لى ملف باك أب فارغ حجمه 0 بايتس لا أعلم لماذا

1-الطريقة الأولى:

import java.io.*;

public class backup2 {

	public static void main(String[] args) {

   try {
			Runtime runtime = Runtime.getRuntime();
			File backupFile = new File("d:/backupScript.sql");
			FileWriter fw = new FileWriter(backupFile);
			Process child = runtime.exec("C:/wamp/bin/mysql/mysql5.0.51b/bin/mysqldump --user=root --password= --lock-all-tables --first_project");
			InputStreamReader irs = new InputStreamReader(child.getInputStream());
			BufferedReader br = new BufferedReader(irs);

			String line;
			while( (line=br.readLine()) != null ) {
				fw.write(line + "\n");
			}
			fw.close();
			irs.close();
			br.close();
		} catch (IOException ex) {
			ex.printStackTrace();
		}










	}
}

2-الطريقة الثانية

import java.io.*;
 class MysqlDump {
public MysqlDump() {
try {

Runtime rt = Runtime.getRuntime();
rt.exec("C:\\wamp\\bin\\mysql\\mysql5.0.51b\\bin\\mysqldump -uroot -p first_project -r c:\\backup.sql");
} catch(IOException ioe) {
ioe.printStackTrace();
}catch(Exception e) {
e.printStackTrace();
}
}

public static void main(String args[]) {
new MysqlDump();
}
}

مع العلم بأن الوامب سيرفر ليس له باسوورد

فما قد يكون سبب المشكلة؟

هل الخطأ فى كتابة إسم الداتا بيز

هل لا بد أن أكتب مسار الداتا بيز ولا أكتفى باسمها فقط؟

#6

أيضا استخدمت هذا المثال ولا يعطى أوتبت ويظل يعمل فقط

import java.io.*;

class MysqlDump {

	public MysqlDump() {

String user="root";
String password="";
String host="jdbc:mysql://localhost:3306";

File test=new File("c:/test.sql");
FileWriter fw=null;
try {
fw = new FileWriter(test);
Process child = Runtime.getRuntime().exec("C:/wamp/bin/mysql/mysql5.0.51b/bin/mysqldump -h"+host+" -u"+user+" -p"+password+" first_project");
InputStream in = child.getInputStream();
InputStreamReader xx = new InputStreamReader(in,"UTF8");
char[] chars=new char[1024];
int ibyte=0;
while((ibyte=xx.read(chars))>0)
{
fw.write(chars);
}
fw.close();

}catch (IOException ex) {ex.printStackTrace();}





	}

	public static void main(String args[]) {
		new MysqlDump();
	}
}

أفيدونا لو سمحتم

#7

مااملك مايسقول حالياً ..

تاكد بان الامر له اوتبوت .. بمعنى اخر استبدل جملة :

 fw.write(line + "\n");

بامر الطباعه System.out.println

ولاحظ هل هناك مخرجات او لا ..

او طبق الامر

C:\\wamp\\bin\\mysql\\mysql5.0.51b\\bin\\mysqldump -uroot -p first_project -r c:\\backup.sql

في الدوس وشوف هل الملف يحتوي على معلومات ام لا .. اذا مافيه مخرجات معناتها المشكله من الامر

#8

لقد اكتشفت أن لدى مشكلة أخرى وهى أن ال localhost الخاص ب phpmyadmin لا يفتح

ولا اعلم لماذا

قد يكون هوا سبب هذه المشكلة

#9

مااعتقد ان اللوكال هوست له دخل بالمسأله .. فبغض النظر هل لديك اباتشي ام لا .. هذا كوماند فقط

هل نفذت الامر في الدوس ؟

#10

عندما استبدلت هذا الأمر

fw.write(line + "\n");

بهذا

System.out.println("Line Is: "+line);

لم تنفذ هذه الميثود ومعنى ذالك ان

(

line=br.readLine()) = null

ما معنى هذا؟؟؟؟؟؟؟؟؟

#11

لما حاولت أنفذ هذا الأمر من خلال الدوس

C:\\wamp\\bin\\mysql\\mysql5.0.51b\\bin\\mysqldump -uroot -p first_project -r c:\\backup.sql

بتطلعلى رسالة

Enter Password

أقوم بضغط انتر لاننى استخدم الاعدادات الديفالت فيصنع ملف الباكب بنجاح

ويبدو أن هذه هيا المشكلة

ان الكود لما يكن يستطيع الدخول الى الداتا بيز وكان يقوم بصناعة ملف فارغ

مع اننى استخدم الاعدادات الديفالت للوامب سيرفر يعنى بدون باسورد

ومتأكد اننى تركت الجزء الخاص بالباسورد فارغ هنا

-uroot -p first_project

فلماذا تظهر لى رسالة أدخل باسورد هذه

وكيف يمكن حل هذه المشكلة مع العلم اننى لا اريد استخدام باسورد للداتا بيز او اريد استخدام الاعدادات الديفالت؟

#12

ألا يوجد مساعده هنا

ما زلت أبحث وأحاول ولم أجد حل للمشكلة؟

#13

على حسب ما أذكر في sql server

كان هناك أمر يساعدك في عمل backup

على فكرة أنت هنا بالتأكيد في المكان الخاطئ

ولولا أن عيسى مهتم بـ mysql لم تجد أحداً يرد عليك

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

مواضيع مشابهة