it-swarm.asia

# 1273 - ترتيب غير معروف: 'utf8mb4_unicode_ci' cPanel

لديّ قاعدة بيانات WordPress على جهازي المحلي وأريد نقلها إلى phpMyAdmin مستضافة على cPanel. ومع ذلك ، عندما أحاول استيراد قاعدة البيانات إلى البيئة ، أظل أتلقى هذا الخطأ:

#1273 - Unknown collation: 'utf8mb4_unicode_ci' 

لقد جربت Google ، والحل الوحيد الذي يمكنني العثور عليه هو هذا خطأ phpmysql - # 1273 - # 1273 - ترتيب غير معروف: 'utf8mb4_general_ci' والذي لا يمثل الكثير من المساعدة حتى الآن. لقد حاولت مسح ملفات تعريف الارتباط لكنها لا تزال لا تعمل. الرجاء المساعدة!

157
Wairimu Murigi

واجهت نفس المشكلة حيث تعمل جميع الخوادم الخاصة بنا على تشغيل إصدارات أقدم من MySQL. يمكن حل ذلك عن طريق تشغيل PHP برنامج نصي. احفظ هذا الرمز في ملف وقم بتشغيله بإدخال اسم قاعدة البيانات والمستخدم وكلمة المرور وسيغير الترتيب من utf8mb4/utf8mb4_unicode_ci إلى utf8/utf8_general_ci

<!DOCTYPE html>
<html>
<head>
  <title>DB-Convert</title>
  <style>
    body { font-family:"Courier New", Courier, monospace; }
  </style>
</head>
<body>

<h1>Convert your Database to utf8_general_ci!</h1>

<form action="db-convert.php" method="post">
  dbname: <input type="text" name="dbname"><br>
  dbuser: <input type="text" name="dbuser"><br>
  dbpass: <input type="text" name="dbpassword"><br>
  <input type="submit">
</form>

</body>
</html>
<?php
if ($_POST) {
  $dbname = $_POST['dbname'];
  $dbuser = $_POST['dbuser'];
  $dbpassword = $_POST['dbpassword'];

  $con = mysql_connect('localhost',$dbuser,$dbpassword);
  if(!$con) { echo "Cannot connect to the database ";die();}
  mysql_select_db($dbname);
  $result=mysql_query('show tables');
  while($tables = mysql_fetch_array($result)) {
          foreach ($tables as $key => $value) {
           mysql_query("ALTER TABLE $value CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci");
     }}
  echo "<script>alert('The collation of your database has been successfully changed!');</script>";
}

?>
101
Stephen

هذه التقنية في هذا المنصب عملت بالنسبة لي

1) انقر فوق علامة التبويب "تصدير" لقاعدة البيانات

2) انقر فوق زر الراديو "مخصص"

3) انتقل إلى القسم المعنون "خيارات خاصة بالتنسيق" وقم بتغيير القائمة المنسدلة لـ "نظام قاعدة البيانات أو خادم MySQL الأقدم لزيادة توافق الإنتاج مع:" من NONE إلى MYSQL40.

4) قم بالتمرير إلى أسفل وانقر فوق "GO".

لست متأكدًا مما إذا كان القيام بهذا يؤدي إلى أي فقد للبيانات ، ولكن في المرة الواحدة التي جربتها ، لم ألاحظ أيًا منها. لم يفعل أي شخص أجاب في المنتديات المرتبطة أعلاه.

تحرير 8/12/16 - أعتقد أن تصدير قاعدة بيانات بهذه الطريقة يجعلني أفقد البيانات المحفوظة في Black Studio TinyMCE Visual Editor الحاجيات ، رغم أنني لم أجري اختبارات متعددة للتأكيد.

230
Evster

أفضل ما يمكنك فعله هو تصدير قاعدة البيانات الخاصة بك إلى .sql ، وفتحه على Notepad ++ وانتقل إلى "البحث والاستبدال". ثم يمكنك وضع "utf8mb4" على البحث و "utf8" على استبدال. سيحل محل utf8mb4_unicode_ci إلى utf8_unicode_ci . انتقل الآن إلى PhpMyAdmin (الوجهة) وقمت بتعيين ترتيب النسخ DB على utf8_unicode_ci (العمليات> الترتيب).

127
Rangel R. Morais

أنا استخدم هذا في لينكس:

sed -i 's/utf8mb4/utf8/g' your_file.sql
sed -i 's/utf8_unicode_ci/utf8_general_ci/g' your_file.sql
sed -i 's/utf8_unicode_520_ci/utf8_general_ci/g' your_file.sql

ثم استعادة your_file.sql

mysql -uyourdbuser -pyourdbpasswd yourdb < your_file.sql
36
halilintar8

قدم Wordpress 4.2 دعمًا لترميز الأحرف "utf8mb4" ل لأسباب أمنية ، ولكن MySQL 5.5.3 فقط ودعم أكبر له. الطريقة التي يتعامل بها المثبت (والمحدث) هي أنه يتحقق من إصدار MySQL وسيتم ترقية قاعدة بياناتك إلى utfmb4 فقط إذا كانت مدعومة .

يبدو هذا رائعًا من الناحية النظرية ولكن المشكلة (كما اكتشفت) هي عندما تقوم بترحيل قواعد البيانات من خادم MySQL الذي يدعم utf8mb4 إلى نظام لا يدعم ذلك. على الرغم من أن الاتجاه الآخر يجب أن يعمل ، فهو في الأساس عملية أحادية الاتجاه.

كما أوضح Evster you may لقد نجحت في استخدام ميزة "تصدير" الخاصة بـ PHPMYAdmin. استخدم " طريقة التصدير: Custom " وللحصول على " نظام قاعدة البيانات أو خادم MySQL الأقدم لزيادة توافق الإخراج مع: " اختيار القائمة المنسدلة " MYSQL 40 ".

لتصدير سطر الأوامر باستخدام mysqldump. إلقاء نظرة على العلم:

$ mysqldump --compatible=mysql4

ملاحظة: إذا كان هناك أي أحرف 4 بايت في قاعدة البيانات فسوف تكون تالفة.

أخيرًا ، لأي شخص يستخدم المكوّن الشائع WP Migrate DB PRO ، مستخدم في خيط Wordpress.org يشير إلى أن عملية الترحيل تتم معالجتها دائمًا بشكل صحيح ولكن لم أتمكن من العثور على أي شيء رسمي.

يقوم WP المكوّن الإضافي Migrate DB بترجمة قاعدة البيانات من ترتيب واحد إلى الآخر عندما يقوم بنقل 4.2 مواقع بين المضيفين باستخدام MySQL قبل أو بعد 5.5.3

في الوقت الحالي ، لا يبدو أن هناك طريقة لإلغاء الاشتراك في تحديث قاعدة البيانات. لذلك إذا كنت تستخدم سير عمل حيث تقوم بترحيل موقع من خادم أو مضيف محلي باستخدام MySQL> 5.5.3 إلى واحد يستخدم إصدار MySQL قديم ، فقد تكون محظوظًا.

27
Mark Thomson

في حالتي اتضح لي
كان الخادم الجديد يعمل على MySQL 5.5 ،
الخادم القديم كان يعمل MySQL 5.6.
إذن حصلت على هذا الخطأ عند محاولة استيراد ملف .sql الذي قمت بتصديره من الخادم القديم.

MySQL 5.5 لا يدعم utf8mb4_unicode_520_ci ، ولكن
الخلية 5.6 لا.

التحديث إلى MySQL 5.6 على الخادم الجديد حل الخطأ الترتيب!

إذا كنت تريد الاحتفاظ بـ MySQL 5.5 ، فيمكنك:
- قم بعمل نسخة من ملف .sql الذي تم تصديره
- استبدال مثيلات utf8mb4unicode520_ci و utf8mb4_unicode_520_ci
... مع utf8mb4_unicode_ci
- استيراد ملف .sql المحدث.

24
SherylHohman

يوجد سطر في wp-config.php:

define('DB_CHARSET', 'utf8mb4');

إذا اتبعت Markouver's / Evster's تعليمات ، لا تنسَ تغيير هذا الخط على خادم الإنتاج إلى

define('DB_CHARSET', 'utf8');

من أجل إصلاح كسر الأحرف 4 بايت

15
Isk1n

بعد وقت طويل من البحث وجدت الحل المذكور أعلاه:

  1. أولاً ، يمكنك تغيير wp-config.php> قاعدة البيانات DB_CHARSET الافتراضية إلى "utf8"

  2. انقر فوق علامة التبويب "تصدير" لقاعدة البيانات

  3. انقر فوق زر الاختيار "مخصص"

  4. انتقل إلى القسم المعنون "الخيارات الخاصة بالتنسيق" وقم بتغيير القائمة المنسدلة لـ "نظام قاعدة البيانات أو خادم MySQL الأقدم لزيادة توافق الإخراج مع:" من NONE إلى MYSQL40.

  5. قم بالتمرير لأسفل وانقر فوق "انتقال"

ثم أنت على.

9
Dead Boyz

يبدو أن مضيفك لا يوفر إصدار MySQL الذي يمكنه تشغيل الجداول مع ترتيب utf8mb4.

تم تغيير جداول WordPress إلى utf8mb4 مع الإصدار 4.2 (تم إصداره في 23 أبريل 2015) لدعم Emojis ، لكن تحتاج إلى MySQL 5.5.3 لاستخدامه. 5.5.3. هو من مارس 2010 ، لذلك ينبغي أن تكون متاحة عادة على نطاق واسع. هل يمكنك التحقق مما إذا كان المضيف الخاص بك يوفر هذا الإصدار؟

إذا لم يكن الأمر كذلك ، ولم تكن الترقية ممكنة ، فقد تضطر إلى البحث عن مضيف آخر لتشغيل أحدث إصدارات WordPress (ويجب عليك دائمًا القيام بذلك لأسباب أمنية).

7
flomei

لذا فقد حللت بهذه الطريقة ، من MySQL 5.6 إلى MySQL 5.5:

$ mysqldump -u username -p --compatible=mysql4 database_name > database_name.sql
$ sed -i 's/TYPE=InnoDB/ENGINE=InnoDB/g' database_name.sql

(اختياري) قم بإنشاء ملف .sql.gz:

$ gzip database_name.sql 

تفسير

$ mysqldump -u username -p --compatible=mysql4 database_name > database_name.sql

كما هو موضح في answer ، هذا هو مجرد ما يعادل هذه الخيارات من phpMyAdmin: "نظام قاعدة البيانات أو خادم MySQL الأقدم لزيادة توافق المخرجات مع:" المنسدلة حدد "MYSQL 40" .

$ sed -i 's/TYPE=InnoDB/ENGINE=InnoDB/g' database_name.sql

نحن بحاجة إلى هذا ، لحل هذه المشكلة:

خطأ 1064 (42000) في السطر 18: لديك خطأ في بناء جملة SQL الخاص بك ؛ تحقق من الدليل الذي يتوافق مع إصدار خادم MySQL للحصول على الصيغة الصحيحة لاستخدامها بالقرب من "TYPE = InnoDB" في السطر 9

2
Andrea

أسهل طريقة للقيام بذلك هي تصدير قاعدة البيانات الخاصة بك إلى .sql ، وفتحها على Notepad ++ و "البحث والاستبدال" utf8mb4_unicode_ciutf8_unicode_ci واستبدال utf8mb4 أيضًا بـ utf8. كما لا تنسَ تغيير ترتيب قاعدة البيانات إلى utf8_unicode_ci (العمليات> الترتيب).

1
Brane

لقد واجهت هذه القضية أيضا. كان الحل الذي نجح بالنسبة لي هو فتح قاعدة بيانات محلية مع Sequel Pro وتحديث تشفير وترتيب إلى utf8/utf8_bin لكل جدول قبل الاستيراد.

1
Damian Walsh

افتح ملف sql على Notepad ++ و ctrl + H. ثم وضعت "utf8mb4" في البحث و "utf8" على استبدال. سيتم إصلاح المشكلة بعد ذلك.

0
John