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

157

У меня есть веб-сайт WordPress на моем локальном сервере WAMP . Но когда я загружаю свою базу данных на работающий сервер, я получаю сообщение об ошибке

#1273  Unknown collation: utf8mb4_unicode_520_ci

Любая помощь будет оценена!

Шишил Патель
источник
37
sed -i 's/utf8mb4_unicode_520_ci/utf8mb4_unicode_ci/g' file.sql
Набиль Кадими,
4
В приведенном ниже море решений поиска и замены не забудьте сначала проверить ответ @ SherylHohman - просто обновите его до mariadb / mysql 5.6, чтобы ваш сервер поддерживал эту сортировку.
Squarecandy
1
Какая версия WordPress? См. Make.wordpress.org/core/2015/04/02/the-utf8mb4-upgrade
Рик Джеймс
Здесь также есть краткое руководство ( wpza.net/unknown-collation-utf8mb4_unicode_520_ci ), которое объясняет все 3 шага, которые вы должны предпринять, чтобы убедиться, что вы сделали все.
WPZA
Проверьте это решение здесь на # 1273 - Неизвестное сопоставление: 'utf8mb4_0900_ai_ci' freakyjolly.com/…
Code Spy

Ответы:

217

Вы можете решить это, найдя

ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;

в вашем .sqlфайле, и поменять его

ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
савани сэнди
источник
28
Я рекомендую ответ Саббы ( stackoverflow.com/a/44122258/168309 ), поскольку он сохраняет utf8mb4
Амир
5
Приведенное ниже решение @Sabba Keynejad лучше, на мой взгляд, поскольку оно поддерживает mb4, вам следует сначала попробовать это.
Маор Баразаны
Обратите внимание, мне пришлось заменить это в нескольких местах в файле SQL. Также были места, где я должен был сделать stackoverflow.com/a/44122258/1436129 ниже.
aubreypwd
На самом деле этот ответ сработал, когда связанный ответ Саббы не сработал. Предположительно из-за моей установки MySql по умолчанию. +1
ушел кодирование
это не работает, теперь это дает ошибку: COLLATION 'utf8_general_ci' is not valid for CHARACTER SET 'utf8mb4' я заменил utf8mb4_unicode_520_ciна, utf8mb4_unicode_ciи это работает, согласно ответу Саббы.
Haritsinh Gohil
286

Я считаю, что эта ошибка вызвана тем, что локальный сервер и живой сервер работают под разными версиями MySQL. Чтобы решить это:

  1. Откройте файл SQL в вашем текстовом редакторе
  2. Найти и заменить все utf8mb4_unicode_520_ciнаutf8mb4_unicode_ci
  3. Сохраните и загрузите в новую базу данных MySql

надеюсь, это поможетвведите описание изображения здесь

Сабба Кейнеджад
источник
4
КОНЕЧНО НЕТ!!! Он широко документально подтверждено , что utf8mb4_unicode_520_ciимеет гораздо лучшую поддержку UTF-8 , чем utf8mb4_unicode_ci! Соус: mysql.rjweb.org/doc.php/charcoll#best_practice с визуальным уточнением, подтверждающий, что 520_ci здесь превосходно: mysql.rjweb.org/utf8_collations.html
Джон
5
@John, статьи, на которые вы ссылаетесь, на самом деле не защищают этот комментарий. Их «Таким образом» даже нельзя правильно сформулировать из их предпосылки. В целом вся статья написана плохо, хотя, похоже, там есть какая-то хорошая информация. 520 использует более новую версию Unicode Collation Algorithm (UCA - версия 5.2.0) с разными весами, но сказать, что «имеет гораздо лучшую поддержку UTF-8», кажется более чем натянутым.
Гремио
Предположим, что стандартное тело (Unicode) обычно делает каждую более новую версию (5.20) «лучше», чем более старая версия (4.0).
Рик Джеймс
Это лучший ответ.
Niby
Я предлагаю это решение, потому что оно заменяет все вхождения "utf8mb4_unicode_520_ci". Принимая во внимание, что ответ савани сандип оставляет некоторые.
Ракеш
49

В моем случае оказывается, что мой
новый сервер работал 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файл.

SherylHohman
источник
2
Это абсолютно лучший способ сделать это, если у вас есть полный контроль над вашим сервером. Обновите новый сервер, чтобы он соответствовал старому серверу. Если у вас нет доступа для обновления вашего нового местоположения на сервере, метод find-replace, вероятно, будет в порядке, но в любом случае, когда вы можете просто сделать это обновление, вам следует.
Squarecandy
1
5,6 это когда 520 был добавлен.
Рик Джеймс
Это должен быть правильный ответ. Большинство других решений больше похоже на хаки. Спасибо @SherylHohman
sawyerrken
30

Откройте файл sql в вашем текстовом редакторе;

1. Поиск: utf8mb4_unicode_ci Заменить: utf8_general_ci (Заменить все)

2. Поиск: utf8mb4_unicode_520_ci Заменить: utf8_general_ci (Заменить все)

3. Поиск: utf8mb4 Заменить: utf8 (Заменить все)

Сохранить и загрузить!

VUUB
источник
Я очень рад, что нашел ваше решение для этого, я получал эту ошибку # 1273 в течение нескольких дней, и я просто не мог найти решение этой проблемы
flying-dev
Спасатель. Спасибо!
Роббларк
15

просто удалите "520_"
utf8mb4_unicode_520_ciutf8mb4_unicode_ci

Шакил Хоссейн
источник
14

легко заменить

sed -i 's/utf8mb4_unicode_520_ci/utf8mb4_unicode_ci/g' your_sql_file.sql
Скард
источник
2
На macOS:sed -i '' 's/utf8mb4_unicode_520_ci/utf8mb4_unicode_ci/g' your_sql_file.sql
Освальдас
6

найти и заменить:

utf8mb4_unicode_520_ci

с участием

utf8_general_ci

в целом файл sql

Джон
источник
3
generalи utf8оба шага назад.
Рик Джеймс
3

Поздно на вечеринку, но в случае, если это происходит с WORDPRESSустановкой:

#1273 - Unknown collation: 'utf8mb4_unicode_520_ci

В phpmyadmin, под export method> Format-specific options(пользовательский экспорт)

Установлен в : MYSQL40

Если вы попытаетесь импортировать сейчас, вы можете получить еще одно сообщение об ошибке:

1064 - You have an error in your SQL syntax; .....

Это потому, что старый TYPEвариант, который был синонимом ENGINEбыл удален в MySQL 5.5.

Откройте свой .sqlфайл, найдите и замените все экземпляры

от TYPE=доENGINE=

Теперь импорт должен идти гладко.

Обмерк Кронен
источник
3

Получение ошибки сопоставления # 1273 - Неизвестное сопоставление: 'utf8mb4_unicode_520_ci' вызвано различием версии MySQL, из которой вы экспортируете, и нашего сервера MySQL, на который вы импортируете. По сути, библиотека Wordpress для более новой версии проверяет, на какой версии SQL работает ваш сайт. Если он использует MySQL версии 5.6 или более, он предполагает использование нового и улучшенного алгоритма сопоставления Unicode (UCA), который называется utf8mb4_unicode_520_ci. Это замечательно, если вы не переместите свой сайт WordPress с более новой версии MySQL 5.6 на более старую версию MySQL до 5.6.

Чтобы решить эту проблему, вам нужно либо отредактировать файл экспорта SQL и выполнить поиск и замену, изменив все экземпляры utf8mb4_unicode_520_ci на utf8mb4_unicode_ci. Или следуйте инструкциям ниже, если у вас есть PHPMyAdmin:

  1. Нажмите на вкладку «Экспорт» для базы данных.
  2. Нажмите кнопку Custom.
  3. Перейдите в раздел «Параметры, специфичные для формата», и измените раскрывающийся список для Системы баз данных или более старого сервера MySQL, чтобы максимизировать совместимость вывода с: от NONE до MYSQL40.
  4. Прокрутите вниз и нажмите GO.
Мушфикур Рахман
источник
1

В моем случае я заменяю его utf8_general_ciна sed следующим образом:

sed -i 's/utf8_0900_ai_ci/utf8_general_ci/g' MY_DB.sql 
sed -i 's/utf8mb4_unicode_520_ci/utf8_general_ci/g' MY_DB.sql 

После этого я могу импортировать его без каких-либо проблем.

Ачу
источник