آموزش ادغام و ترکیب دو دیتابیس وردپرس جدا از هم (مجزا)
کد تخفیف در جریان tabestan97 %15 تا آخر تابستان 97

طبق درخواست یکی از کاربران مارکت دِومی قصد داریم در این مستند به شما نحوه ادغام دو دیتابیس جدا از هم وردپرس را آموزش دهیم. نتیجه ی کار ادغام دیتابیس ها همانند زمانی خواهد بود که دو وردپرس را در یک دیتابیس نصب کرده اید. یعنی در نهایت جداول مربوط به دو وردپرس در یک دیتابیس دارای پیشوندهای متفاوتی خواهند بود. با ما همراه باشید.

Merge Databases

برای شروع کار از وردپرس دوم شروع می کنیم. تفاوتی ندارد کدام دیتابیس را به دیگری منتقل می کنید، فقط باید دیتابیسی که اول انتخاب می کنید را با دقت طبق مراحل زیر پیش ببرید.

بسیار مهم و ضروری : پیش از انجام اینکار ، از دیتابیس ها یک بک آپ تهیه کنید تا در صورتی که مرحله ای را اشتباه انجام دادید یا اتصال اینترنت شما در جریان تغییرات با مشکل روبه رو شد و دیتابیس خراب شد، راه برگشت داشته باشید.

 


1 . ویرایش فایل wp-config

فایل wp-config.php وردپرس دوم را باز کنید. نیاز است چند خط را ویرایش کنیم. ابتدا اطلاعات دیتابیس را تغییر دهید. اطلاعات جدید باید دقیقا همان اطلاعات دیتابیسی باشد که برای وردپرس اول وارد شده، تا با اینکار وردپرس دوم به دیتابیس وردپرس اول متصل شود.

/** The name of the database for WordPress */
define('DB_NAME', 'DBNAME');

/** MySQL database username */
define('DB_USER', 'DBUSERNAME');

/** MySQL database password */
define('DB_PASSWORD', 'DBPASSWORD');

/** MySQL hostname */
define('DB_HOST', 'localhost');

پس از آن در همان فایل، خط زیر را پیدا کنید و پیشوند دیتابیس را تغییر دهید. برای مثال وردپرس دوم فرضی ما دارای پیشوند wp_ بود که آنرا به devme_ تغییر دادیم. دقت کنید این پیشوند را بعدا باید روی جداول دیتابیس وردپرس دوم اعمال کنیم. بهتر است فقط از حروف انگلیسی استفاده کنید:

$table_prefix  = 'devme_';

 


2 . تغییر پیشوند جداول دیتابیس وردپرس دوم

اکنون وارد دیتابیس وردپرس دوم شوید. یعنی همان دیتابیسی که وردپرس دوم را روی آن نصب کرده بودید. در این مرحله باید پیشوند جداول وردپرس را به همان پیشوندی تغییر دهیم که در مرحله اول انتخاب کردیم. شما می توانید جداول را به صورت دستی (از طریق تیک زدن مربع های کنار جداول) انتخاب کنید سپس از منوی بازشوی پایین صفحه گزینه Replace Table Prefix را انتخاب کنید. در پنجره ی باز شده در فیلد From پیشوند فعلی جداول و در فیلد To پیشوند جدید را وارد کنید و Continue را کلیک کنید. مانند تصویر زیر :

Devme DB Prefix 1

یا اینکه در دیتابیس وردپرس دوم، تب SQL را کلیک کنید و در کادر متنی صفحه باز شده، از دستور زیر برای هر جدول استفاده کنید:

RENAME table `wp_options` TO `devme_options`;

برای هر جدول موجود در دیتابیس وردپرس دومتان باید یک خط مانند بالا بنویسید که شامل نام جدول هم می شود. در قسمت اول کد باید نام جدول (به همراه پیشوند فعلی) فعلی و در قسمت دوم، نام جدول آینده با پیشوند جدید را وارد کنید. برای مثال فرض کنید بخواهیم جداول اصلی وردپرس را تغییر پیشوند دهیم، می توانیم در بخش SQL این کدها را وارد کنیم:

RENAME table `wp_commentmeta` TO `devme_commentmeta`;
RENAME table `wp_comments` TO `devme_comments`;
RENAME table `wp_links` TO `devme_links`;
RENAME table `wp_options` TO `devme_options`;
RENAME table `wp_postmeta` TO `devme_postmeta`;
RENAME table `wp_posts` TO `devme_posts`;
RENAME table `wp_terms` TO `devme_terms`;
RENAME table `wp_termmeta` TO `devme_termmeta`;
RENAME table `wp_term_relationships` TO `devme_term_relationships`;
RENAME table `wp_term_taxonomy` TO `devme_term_taxonomy`;
RENAME table `wp_usermeta` TO `devme_usermeta`;
RENAME table `wp_users` TO `devme_users`;

توجه: برای هر جدول داخل دیتابیس باید یک خط مانند بالا بنویسید.

پیشنهاد: مارکت دِومی به شما روش دوم را پیشنهاد می کند اما اگر اینکار برایتان سخت است، می توانید از روش اول استفاده کنید.

 


3 . یافتن و تغییر پیشوند داده های ذخیره شده در جداول options و usermeta

پس از تغییر پیشوند توسط مرحله 2 این مستند، اکنون باید 2 جدول داخل دیتابیس را بررسی کنیم و هر داده ای که با پیشوند قبلی ذخیره شده است را به پیشوند جدید تغییر دهیم. این کار بسیار ضروری است چرا که ممکن است برخی از افزونه ها با استفاده از پیشوند قبلی اطلاعاتی را در جدول های options و usermeta ذخیره کرده باشند که در صورت تغییر نکردن پیشوند در این داده ها، کارکرد افزونه های مذکور با مشکل مواجه خواهد شد.

بنابراین در دیتابیس وردپرس دوم (همانجا که پیشوندها را تغییر دادید)، وارد تب SQL شده و کدهای زیر را تک تک وارد کنید و موارد یافته شده را اصلاح کنید.

ابتدا کد زیر را وارد کنید:

SELECT * FROM `devme_options` WHERE `option_name` LIKE '%wp_%'

نکته:

  • بجای devme_ پیشوند جدیدی که برای جداول انتخاب کرده اید را جایگزین کنید.
  • اگر پیشوند جداول قبلی شما wp_ نبود، در انتهای کد بالا بجای wp_ وارد کنید.

سپس مقادیری که یافت می شود را اصلاح نمایید. (از پیشوند قبلی به جدید ویرایش کنید)

 

بعد از آن مجددا وارد تب SQL شده و اینبار کد زیر را وارد کنید:

SELECT * FROM `devme_usermeta` WHERE `meta_key` LIKE '%wp_%'

نکته: مانند کد قبل، پیشوند جدیدتان و قبلی را با دقت اصلاح نمایید و مقادیری که یافت می کنید را به صورت دستی ویرایش نمایید .

 


4 . انتقال جداول به دیتابیس جدید

در نهایت پس از اینکه مطمئن شدید تمامی پیشوندها به پیشوند جدید تغییر یافتند، از تمامی جداول Backup بگیرید و آنها را در دیتابیس وردپرس اول درون ریزی (Import) کنید.

اگر مراحل را به درستی پیش رفته باشید، اکنون دو وردپرس شما روی یک دیتابیس قرار گرفته اند.

 


خطای احتمالی

گاهی اوقات پس از انجام این انتقال، ممکن است در پیشخوان وردپرس دوم با خطای زیر مواجه شوید:

Warning: Cannot modify header information – headers already sent by (output started at /myurl/wp-config.php:1) in /myurl/wp-includes/option.php on line 838

اگر به چنین خطایی برخوردید، وارد فایل wp-config.php شوید و بررسی کنید که در خط آخر یا اول این فایل، خط اضافه (خط خالی) وجود نداشته باشد. یعنی در خط اول این فایل باید <?php قرار داشته باشد بدون اینکه قبل از آن فاصله یا خط دیگری وجود داشته باشد.

کریمی گفت :اسفند 3, 1396

درود بر مشا
در آغاز از پاسخگویی سریع شما بسیار سپاسگزارم. می خوام بدونم پیشوند دیتابیس ها باید یکی باشه؟ یعنی اونجا که گفتید پیشوند دیتابیس دوم رو تغییر می دیم باید ببینیم پیشوند دیتابیس اول چیه و به همون تغییر بدیم؟

مسیح دیندار گفت :اسفند 3, 1396

درود
خیر به هیچ وجه نباید پیشوند دو وردپرس یکی باشه. در واقع عملیات تغییر پیشوند جداول به این دلیل انجام میشه که جدوال دو وردپرس از هم جدا باشند و اطلاعاتشون تداخل نداشته باشه

کریمی گفت :اسفند 3, 1396

سپاس از شما

مسیح دیندار گفت :اسفند 3, 1396

خواهش میکنم
همچنان اگر مشکلی بود درخدمتیم
موفق باشید

کریمی گفت :اسفند 6, 1396

از راهنمایی شما بسیار سپاسگزارم. انجام شد و نتیجه رضایت بخش بود.
آیا امکان ادغام انجمنی که با مای بی بی نوشته شده نیز راهی هست؟ هرچند بعید می دانم.

مسیح دیندار گفت :اسفند 6, 1396

درود.
برای اتصال انجمن به وردپرس باید دنبال افزونه های مخصوص اون باشید تا اینکار رو براتون انجام بده. به صورت دستی قابل انجام نیست.

کریمی گفت :اسفند 6, 1396

سلام
تو اعلام نتیجه عجله کردم، البته از نظر دیتابیس مشکلی وجود نداشت ولی در زمان ثبت نام مشکل ایجاد شد. سایت اصلی کلا امکان ثبت نام وجود نداره و توزیر دامنه ها هم که ثبت نام می کنم فقط تو خود اون ساب دامین می تونم وارد شم.
با احترام

مسیح دیندار گفت :اسفند 6, 1396

یعنی با انجام اینکار روند ثبت نام در سایت اصلی با مشکل مواجه شده یا به طور کل قابلیت ثبت نام در سایت اصلی غیرفعال هست؟
چون با ادغام دیتابیس ها، آموزش این مستند هم باید انجام بشه تا جداول مربوط به کاربران ثبت نام شده بین دو وردپرس به اشتراک گذاشته بشه.

کریمی گفت :اسفند 7, 1396

اتفاقا الان داشتم به این فکر می کردم که باید قطعه کدی پیدا کنم که این دو تا جدول رو از یک جا بخونه، ولی الان این سوال برام پیش اومد که خوب کسانی که پیش از این تو سایت دوم ثبت نام کردند چطوری می تونند وارد بشن. چیزی که مسلمه کسانی که پیش از این تو سایت اول نام نویسی کروند یا کسانی که پس از این تو هر کدوم از دو سابت نام نویسی کنند مشکلی برای ورود ندارند ولی دسته اول که گفتم چطور می تونن وارد شوند. فکر کنم باید اطلاعات اون دو تا جدول سایت دوم تو جداول سایت اول ایمپورت بشن ولی پرسشم اینه که با این کار اطلاعات قبلی پاک نمیشن؟

مسیح دیندار گفت :اسفند 7, 1396

با انجام ادغام دیتابیس و اتصال جدول کاربران، هر دو وردپرس از جدول کاربران وردپرس اصلی استفاده خواهند کرد. قبل از انجام انتقال باید از جدول کاربران وردپرس دوم بک آپ تهیه کنید و در وردپرس اصلی ایمپورت کنید. البته اینکار رو نباید به صورت دستی انجام بدید. افزونه ای مثل Cimy User هست (یا افزونه های مشابه) که می تونه اینکارو انجام بده. چون آی دی کاربران ایمپورت شده نباید با آی دی کاربران قبلی تداخل پیدا کنه که باعث از دست رفتن اطلاعات بشه، باید این روند به صورت افزونه ای انجام بشه .

به طور خلاصه پس از اتصال جداول، کاربرانی که از قبل روی وردپرس دوم ثبت نام کرده اند نمی تونند وارد بشن تا زمانی که جدول کاربران وردپرس دوم روی جدول کاربران وردپرس اول ایمپورت بشه.

موفق باشید.

nobati.co گفت :فروردین 14, 1397

ممنون عالی بود

دیدگاه شما درباره این صفحه چیست؟