PDA

View Full Version : سوال: وارد کردن تیبلهای دیتابیس قدیمی



#Elahe#
سه شنبه 06 فروردین 1392, 01:35 صبح
سلام
در وی بولتین و هنگام آپگرید و . . . . بعضی از تاپیکها پستهاشون از بین رفته !
یعنی خود تاپیکها موجود هستند ولی وقتی وارد تاپیک میشیم هیچ پست و متنی تو تاپیک وجود نداره !!!

سوال اینه که اگر ما تیبلهای دیتابیس قدیمی رو وارد دیتابیس فعلی بکنیم ، دیتابیس فعلی کلا پاک میشه و دیتابیس قدیمی جاش میشینه یا اینکه فقط تیبلهای مشابه اوررایت میشن روی هم و تیبیلهای جدید (تاپیکها و پستهای جدید) که در دیتابیس قدیم موجود نیستند و تو دیتابیس فعلی موجود هستند باقی میمونند ؟

امیدوارم تونسته باشم منظورم رو خوب توضیح بدم:لبخندساده:

hamidhassas
سه شنبه 06 فروردین 1392, 08:57 صبح
بهترین کار اینه که شما دیتابیس قدیمی خود رو با همون نسخه ویبولیتی که با اون بک آپ گرفتید ایجاد کنید و بعد کل نسخه رو با وی بولتین جدید با استفاده از قسمت به روز رسانی آبدیت کنید این جوری هم نسخه و هم اطلاعات شما به روز میشه و اطاعات قبلی سر جاش میمونه

MMSHFE
سه شنبه 06 فروردین 1392, 09:20 صبح
بستگی به این داره که توی Export گزینه Drop Table If Exists انتخاب شده باشه یا نه. کلاً اگه میخواین جدولهای قبلی حذف نشه، فایل sql. رو با ادیتور باز کنید و داخلش هرچی دستور DROP دیدین حذف کنید. البته حواستون هم باید باشه که درصورت وجود رکوردهایی با کلید اصلی برابر با رکوردهایی که قراره درج بشن، عمل Import با پیغام خطا متوقف خواهد شد. بهترین کار اینه که خودتون یک سیستم Backup/Restore طراحی کنید.

#Elahe#
سه شنبه 06 فروردین 1392, 11:38 صبح
بهترین کار اینه که شما دیتابیس قدیمی خود رو با همون نسخه ویبولیتی که با اون بک آپ گرفتید ایجاد کنید و بعد کل نسخه رو با وی بولتین جدید با استفاده از قسمت به روز رسانی آبدیت کنید این جوری هم نسخه و هم اطلاعات شما به روز میشه و اطاعات قبلی سر جاش میمونه
پس دیتاهای جدید چی میشن ؟
من میخوام دیتابیس قدیمی رو ایمپورت کنم و در عین حال دیتاهای جدید هم که در اون دیتابیس قدیم موجود نیستند سرجاشون باقی بمونن و از بین نرن

بستگی به این داره که توی Export گزینه Drop Table If Exists انتخاب شده باشه یا نه. کلاً اگه میخواین جدولهای قبلی حذف نشه، فایل sql. رو با ادیتور باز کنید و داخلش هرچی دستور DROP دیدین حذف کنید. البته حواستون هم باید باشه که درصورت وجود رکوردهایی با کلید اصلی برابر با رکوردهایی که قراره درج بشن، عمل Import با پیغام خطا متوقف خواهد شد. بهترین کار اینه که خودتون یک سیستم Backup/Restore طراحی کنید.
اتفاقا میخوام جدول قدیم حذف شه و دیتایی که ایمپورت میکنم جای اونا بشینه

یه مثال کاربردیتر بزنم :

همین فروم برنامه نویس رو تصور کنید که تا تاریخ 91.11.30 ازش بکاپ داریم
بعد از آپگرید ورژن انجمن و ریستور دیتابیس ، در این 37 روز (از تاریخ 91.12.1 تا 92.1.7) کلی تاپیک و پست جدید ایجاد شده
الان میبینیم که تاپیکهای قدیمی مختل شده اند و به جز اسم تاپیکها هیچ چیز دیگه ای توشون نیست !!!

سوال : اگر دیتابیس قدیمی رو ایمپورت کنیم برای تاپیکها و پستهای جدید (همون از تاریخ 91.12.1 تا 92.1.7) مشکلی پیش میاد یا نه ؟

MMSHFE
سه شنبه 06 فروردین 1392, 11:56 صبح
اگه از Import/Export خود phpmyadmin استفاده کنید، بله به مشکل بر خواهید خورد چون احتمالاً جدولها حذف و مجدداً ساخته میشن و حتی اگه موقع Export گرفتن گزینه Drop Table رو غیرفعال کنید، باز هم برخی از موضوعات بازنویسی شده و یا موضوعات حذف شده مجدداً برمیگردن و احتمالاً تداخلهایی هم در کلیدهای خارجی جداول ایجاد خواهد شد (مثلاً رکورد شماره 25 مربوط به دانشجوی خاصی هست که بعد از Import تغییر میکنه یا حذف/اضافه میشه درحالی که در جدول دیگری، نمراتی رو برای دانشجو با id شماره 25 داریم). در کل بهترین راه، ایجاد یک سیستم Backup/Restore اختصاصی هست. اگر هم میخواین جدول قدیم حذف بشه و جداول جدید ساخته بشن، موقع Export گرفتن گزینه Drop Table رو انتخاب کنید (در حالت Custom Export) ولی حواستون باشه که اطلاعاتی که بعد از اون تاریخ درج شدن، حذف خواهند شد.

#Elahe#
سه شنبه 06 فروردین 1392, 12:04 عصر
میشه خیلی مختصر راجع به بکاپ ریستور اختصاصی توضیح بدید ؟

MMSHFE
سه شنبه 06 فروردین 1392, 12:11 عصر
یعنی اینکه خودتون یک اسکریپت بنویسید که اسامی جداول و... رو از توی دیتابیس در بیاره و براشون کوئری CREATE TABLE و INSERT INTO و... بنویسیه و برحسب نیازتون، تعیین کنید موقع درج اگه رکورد وجود داشت چطور عمل بشه. بطور کلی برحسب نیازتون، خودتون یک سیستم Export/Import بنویسید. حتی با این کار میتونید به تک تک کاربرانتون اجازه بدین از مطالب خودشون پشتیبان بگیرن.