# 1273 - Невідоме порівняння: 'utf8mb4_unicode_520_ci'


157

У мене на локальному сервері WAMP є веб-сайт WordPress . Але коли я завантажую його базу даних на живий сервер, я отримую помилку

#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
Я рекомендую відповідь Sabba ( 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і він працює, як і у відповідь Sabba в.
Харіцин Гохіль

286

Я вважаю, що ця помилка викликана тим, що локальний сервер і сервер в реальному часі мають різні версії MySQL. Щоб вирішити це:

  1. Відкрийте файл sql у текстовому редакторі
  2. Знайдіть і замініть усіх utf8mb4_unicode_520_ci наutf8mb4_unicode_ci
  3. Збережіть та завантажте на новий файл mySql db

Сподіваюся, що це допомагаєвведіть тут опис зображення


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 (UCA - версія 5.2.0) з різною вагою, але сказати, що "має набагато кращу підтримку UTF-8", здається, більше, ніж розтягнення.
Греміо

Припустимо, що тіло стандартів (Unicode) зазвичай робить кожну нову версію (5.20) «кращою», ніж старіша версія (4.0).
Рік Джеймс

Це найкраща відповідь.
Нібі

Я пропоную це рішення, оскільки воно замінює всі події "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файл.


2
Це абсолютно найкращий спосіб зробити це, якщо ви маєте повний контроль над своїм сервером. Оновіть новий сервер, щоб він відповідав старому серверу. Якщо у вас немає доступу до оновлення вашого нового сервера, спосіб пошуку-заміни, ймовірно, буде нормальним, але в будь-якому випадку, якщо ви можете просто зробити це оновлення замість цього, вам слід.
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 (Замінити все)

Збережіть та завантажте!


Я дуже радий, що знайшов ваше рішення для цього, я отримував цю помилку №123 протягом кількох днів, і я просто не міг знайти рішення для цього
flying-dev

Рятувальник. Дякую!
robbclarke


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
Освальдас

7

Я щойно відкрив файл dump.sql у Блокноті ++ і натиснув CTRL + H, щоб знайти та замінити рядок " utf8mb4_0900_ai_ci " і замінив його на " utf8mb4_general_ci ". Джерело посилання https://www.freakyjolly.com/ разрешило-when- i- faced-1273- unknown- collation-utf8mb4_0900_ai_ci- error/



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 з нової 5.6 версії MySQL на більш стару, попередню версію 5.6 MySQL.

Щоб вирішити це, вам доведеться відредагувати файл експорту SQL та здійснити пошук та заміну, змінивши всі екземпляри 'utf8mb4_unicode_520_ci' на 'utf8mb4_unicode_ci'. Або виконайте наведені нижче дії, якщо у вас є PHPMyAdmin:

  1. Перейдіть на вкладку Експорт для бази даних
  2. Натисніть користувальницьку радіо кнопку.
  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 

Після цього я можу імпортувати його без жодних питань.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.