هشدار : در تبدیل نوع collation بانک اطلاعاتی وردپرس از utf8mb4  به utf8 ممکن است برخی از اطلاعات از بین بروند .

حتماً قبل از انجام این تبدیل یک فول بکاپ (Full Backup) از بانک اطلاعاتی خود تهیه کنید ، تا در صورتی که مشکلی رخ داد ، بتوانید بانک اطلاعاتی خود را بازیابی کنید .

با ارائه وردپرس نسخه ۴.۲ ، یکسری تغییرات اساسی در هسته وردپرس ایجاد شد . یکی از این تغییرات خاص تبدیل نوع collation بانک اطلاعاتی وردپرس از uft8 به utf8mb4   و یا به عبارتی utf8_general_ci به utf8mb4_unicode_ci   بود .

وردپرس در صورتی این ارتقاء را انجام می دهد که یکی از حالت های زیر مشاهده شود :

  • شما در حال استفاده از نوع character set یا collation از نوع utf8  باشید .
  • سرور MySQL شما دارای ورژن ۵.۵.۳ و یا بالاتر باشد .
  • کتابخانه های MySQL مشتری دارای ورژن ۵.۵.۳ و یا بیشتر باشند .

تفاوت این دو نوع collation  این است که در نوع utf8  تنها کاراکترهای ۳ بایتی امکان ذخیره شدن دارند در حالیکه در نوع utf8mb4 امکان ذخیره سازی کاراکترهای ۴ بایتی وجود دارد .

به عبارت دیگر  در نوع utf8mb4  امکان ذخیره سازی هر نوع کاراکتر یونیکدی وجود دارد که این ویژگی قبلاً در نوع utf8 وجود نداشت .

همچنین در نوع utf8 به از ای هر کاراکتر به صورت ثابت ۴ بایت در نظر گرفته می شود ، در حالیکه در نوع utf8mb4 به ازای هر کاراکتر از ۱ تا ۴ بایت فضا در نظر گرفته می شود .

یکی از خطاهای احتمالی که ممکن است شما در رابطه با این تغییر در وردپرس خود مشاهده کنید مانند زیر است :

#۱۲۷۳ – Unknown collation: ‘utf8mb4_unicode_ci’

 راه حل های مختلفی برای حل این مشکل وجود دارد که ما در این مقاله آموزشی چند روش را به شما نشان می دهیم تا بتوانید حداقل از یکی از آنها برای رفع این مشکل استفاده کنید .

۱- استفاده از افزونه wp-migrate-db

۲- استفاده از کد زیر با استفاده از دستورالعمل گفته شده در بخش پایین :


$dbname = 'your-database-name';
mysql_connect('your-database-hostname', 'your-database-username', 'your-database-password');
mysql_query("ALTER DATABASE `$dbname` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci");
$result = mysql_query("SHOW TABLES FROM `$dbname`");
while($row = mysql_fetch_row($result)) {
 $query = "ALTER TABLE {$dbname}.`{$row

[۰]}` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci”;
mysql_query($query);
$query = “ALTER TABLE {$dbname}.`{$row[0]}` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci”;
mysql_query($query);
}
echo ‘All the tables have been converted successfully’;
?>

ابتدا کد بالا را در یک فایل با نام dbconversion.php ذخیره کنید .

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

در پایان فایل را توسط دستور   https://example.com/dbconversion.php اجرا کنید .

تمام شد . دیتابیس شما از نوع utf8mb4 به utf8 تغییر کرد .

نکات مهم :

از وجود داشتن دستور زیر در فایل wp-config.php وردپرس خود مطمئن شوید

define(‘DB_CHARSET’, ‘utf8’);

در خطوط ۲ و ۳ اطلاعات بانک اطلاعاتی خود را به جای اطلاعات فعلی که نمونه می باشند ، قرار دهید .

۳- استفاده از کد زیر . این روش دقیقاً مانند روش ۲ است ، با این تفاوت که یک رابط کاربری برای وارد کردن اطلاعات دیتابیس نیز در نظر گرفته شده است .

	
		

Convert your Database to utf8_general_ci!

dbname:
dbuser:
dbpass:

“; } ?>

نکته مهم : بعد از  استفاده از روش های ۲ یا ۳ ، حتماً فایلی که آپلود کرده اید را حذف کنید .

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

شاد باشید 🙂