it-swarm.com.ru

# 1273 - Неизвестное сопоставление: Cpanel 'utf8mb4_unicode_ci'

У меня есть база данных WordPress на моей локальной машине, которую я хочу перенести в хостинг phpMyAdmin на Cpanel. Однако, когда я пытаюсь импортировать базу данных в среду, я получаю эту ошибку

#1273 - Unknown collation: 'utf8mb4_unicode_ci' 

Я попытался погуглить вокруг, и единственное решение, которое я могу найти, это одно ошибка phpmysql - # 1273 - # 1273 - Неизвестное сопоставление: 'utf8mb4_general_ci' , которое к настоящему времени не очень помогает. Я пытался очистить куки, но он все равно не работает. Пожалуйста помоги!

154
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>";
}

?>
100
Stephen

Техника в этом посте работала для меня

1) Нажмите на вкладку «Экспорт» для базы данных

2) Нажмите кнопку «Пользовательский»

3) Перейдите в раздел «Опции, зависящие от формата» и измените раскрывающийся список «Система базы данных или более старый сервер MySQL, чтобы максимизировать совместимость вывода с:» с NONE на MYSQL40.

4) Прокрутите вниз и нажмите «GO».

Я не уверен, вызывает ли это какую-либо потерю данных, однако за один раз, когда я попробовал это, я не заметил ничего. Никто не отвечал на форумах, связанных с вышеупомянутыми.

Edit 8/12/16 - Я считаю, что экспорт базы данных таким образом приводит к потере данных, сохраненных в Black Studio TinyMCE Visual Editor widgets, хотя я не выполнил несколько тестов для подтверждения.

228
Evster

Лучше всего экспортировать базу данных в .sql, открыть ее в Notepad ++ и перейти к разделу «Поиск и замена». Затем вы кладете "utf8mb4" на поиск и "utf8" на замену. Он заменит utf8mb4_unicode_ci to utf8_unicode_ci . Теперь вы идете в свой PhpMyAdmin (пункт назначения) и устанавливаете параметры сортировки БД равными utf8_unicode_ci (Операции> Параметры сортировки).

123
Rangel R. Morais

я использую это в Linux:

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
35
halilintar8

В Wordpress 4.2 появилась поддержка кодировки символов «utf8mb4» для по соображениям безопасности , но ее поддерживают только MySQL 5.5.3 и более поздние версии. Способ, которым установщик (и средство обновления) управляют этим, заключается в том, что он проверяет вашу версию MySQL, и ваша база данных будет обновлена ​​до utfmb4 только в том случае, если она поддерживается.

В теории это звучит замечательно, но проблема (как вы обнаружили) заключается в том, что вы переносите базы данных с сервера MySQL, который поддерживает utf8mb4, на сервер, который этого не делает. Хотя обратный путь должен работать, это в основном односторонняя операция.

Как указывает Евстер, вы могли бы иметь успех, используя функцию PHPMYAdmin «Экспорт». Используйте «Export Method: 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, но
MySQL 5.6 делает.

Обновление до MySQL 5.6 на новом сервере решило проблему сортировки!

Если вы хотите сохранить MySQL 5.5, вы можете:
- сделать копию экспортированного файла .sql
- заменить экземпляры utf8mb4unicode520_ci и utf8mb4_unicode_520_ci
... с utf8mb4_unicode_ci
- импортируйте обновленный файл .sql.

22
SherylHohman

В wp-config.php есть строка:

define('DB_CHARSET', 'utf8mb4');

Если вы будете следовать инструкциям Маркувера / Евстера , не забудьте изменить эту строку на производственном сервере на

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 для максимальной совместимости вывода с:" dropdown select "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_ci до utf8_unicode_ci, а также заменить utf8mb4 на utf8. Также не забудьте изменить параметры сортировки базы данных на utf8_unicode_ci (Операции> Параметры сортировки).

1
raBne

Я также испытал эту проблему. Решением, которое работало для меня, было открытие локальной базы данных с Sequel Pro и обновлением Encoding and Collation utf8/utf8_bin для каждой таблицы перед импортом. 

1
Damian Walsh

откройте файл sql в Notepad ++ и ctrl + H. Затем введите «utf8mb4» для поиска и «utf8» для замены . Тогда проблема будет устранена.

0
John