انجمن سون هاست

آموزش ادغام و ترکیب دو دیتابیس وردپرس جدا از هم

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

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

  • ویرایش فایل 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_ بود که آنرا به 7host_ تغییر دادیم. دقت کنید این پیشوند را بعدا باید روی جداول دیتابیس وردپرس دوم اعمال کنیم. بهتر است فقط از حروف انگلیسی استفاده کنید:

$table_prefix  = '7host_';
  • تغییر پیشوند جداول دیتابیس وردپرس دوم

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

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

RENAME table `wp_options` TO `7host_options`;

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

RENAME table `wp_commentmeta` TO `7host_commentmeta`;
RENAME table `wp_comments` TO `7host_comments`;
RENAME table `wp_links` TO `7host_links`;
RENAME table `wp_options` TO `7host_options`;
RENAME table `wp_postmeta` TO `7host_postmeta`;
RENAME table `wp_posts` TO `7host_posts`;
RENAME table `wp_terms` TO `7host_terms`;
RENAME table `wp_termmeta` TO `7host_termmeta`;
RENAME table `wp_term_relationships` TO `7host_term_relationships`;
RENAME table `wp_term_taxonomy` TO `7host_term_taxonomy`;
RENAME table `wp_usermeta` TO `7host_usermeta`;
RENAME table `wp_users` TO `7host_users`;

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

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

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

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

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

SELECT * FROM `7host_options` WHERE `option_name` LIKE '%wp_%'

نکته:

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

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

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

SELECT * FROM `7host_usermeta` WHERE `meta_key` LIKE '%wp_%'

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

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

در نهایت پس از اینکه مطمئن شدید تمامی پیشوندها به پیشوند جدید تغییر یافتند، از تمامی جداول 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?> قرار داشته باشد بدون اینکه قبل از آن فاصله یا خط دیگری وجود داشته باشد.

5 Likes

اگر پیشوند دو تا دیتابیس فرق کنه لازمه که مجددا تغییرش بدیم؟

برا انتقال دیتابیس سایت وردپرس رو یه سایت اختصاصی با لاراول زده شده، انجامش چقد هزینه میبره؟