# 1273 - Classement inconnu: 'utf8mb4_unicode_520_ci'

157

J'ai un site Web WordPress sur mon serveur WAMP local. Mais lorsque je télécharge sa base de données sur le serveur en direct, j'obtiens une erreur

#1273  Unknown collation: utf8mb4_unicode_520_ci

Toute aide serait appréciée!

Shishil Patel
la source
37
sed -i 's/utf8mb4_unicode_520_ci/utf8mb4_unicode_ci/g' file.sql
Nabil Kadimi
4
Dans une mer de solutions de recherche et de remplacement ci-dessous, n'oubliez pas de vérifier d'abord la réponse de @ SherylHohman - il vous suffit de mettre à niveau vers mariadb / mysql 5.6 pour que votre serveur prenne en charge ce classement.
squarecandy
1
Quelle version de WordPress? Voir make.wordpress.org/core/2015/04/02/the-utf8mb4-upgrade
Rick James
Il y a aussi un guide rapide ici ( wpza.net/unknown-collation-utf8mb4_unicode_520_ci ) qui explique toutes les 3 étapes à suivre pour vous assurer que vous avez tout fait.
WPZA
Vérifiez cette solution ici pour # 1273 - Classement inconnu: 'utf8mb4_0900_ai_ci' freakyjolly.com
Code Spy

Réponses:

217

Vous pouvez résoudre ce problème en trouvant

ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;

dans votre .sqlfichier, et en l'échangeant avec

ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
savani sandip
la source
28
Je recommande la réponse de Sabba ( stackoverflow.com/a/44122258/168309 ) car il conserve l'utf8mb4
Amir
5
La solution ci-dessous de @Sabba Keynejad est meilleure à mon avis, car elle conserve le mb4, vous devriez d'abord essayer cela.
Maor Barazany
Notez que j'ai dû le remplacer à plusieurs endroits dans le fichier SQL. Il y avait aussi des endroits où je devais faire stackoverflow.com/a/44122258/1436129 ci-dessous aussi.
aubreypwd
En fait, cette réponse fonctionnait alors que la réponse liée de Sabba ne fonctionnait pas. Probablement à cause de mes paramètres par défaut d'installation MySql. +1
Fini le codage
ça ne marche pas, maintenant ça donne une erreur COLLATION 'utf8_general_ci' is not valid for CHARACTER SET 'utf8mb4' :, j'ai remplacé utf8mb4_unicode_520_cipar utf8mb4_unicode_ciet ça marche, selon la réponse de Sabba.
Haritsinh Gohil
286

Je pense que cette erreur est due au fait que le serveur local et le serveur live exécutent différentes versions de MySQL. Pour résoudre ceci:

  1. Ouvrez le fichier sql dans votre éditeur de texte
  2. Trouvez et remplacez tout utf8mb4_unicode_520_ciparutf8mb4_unicode_ci
  3. Enregistrer et télécharger dans une nouvelle base de données mySql

J'espère que cela pourra aiderentrez la description de l'image ici

Sabba Keynejad
la source
4
SÛREMENT PAS!!! Il a été largement documenté qu'il utf8mb4_unicode_520_cia un bien meilleur support UTF-8 que utf8mb4_unicode_ci! Sauce: mysql.rjweb.org/doc.php/charcoll#best_practice avec clarification visuelle prouvant que 520_ci est supérieur ici: mysql.rjweb.org/utf8_collations.html
John
5
@John, les articles que vous avez liés ne défendent pas vraiment ce commentaire. Leur «Ainsi» ne peut même pas être correctement énoncé à partir de leur prémisse. Dans l'ensemble, l'article entier est mal rédigé, bien qu'il semble y avoir de bonnes informations. Le classement 520 utilise une version plus récente de l'algorithme de classement Unicode (UCA - version 5.2.0) avec des poids différents, mais dire qu'il "a un bien meilleur support UTF-8" semble plus qu'un étirement.
Gremio
Supposons qu'un corps de normes (Unicode) rendra généralement chaque nouvelle version (5.20) "meilleure" qu'une ancienne version (4.0).
Rick James
C'est la meilleure réponse.
Niby
Je suggère cette solution car elle remplace toutes les occurrences "utf8mb4_unicode_520_ci". Alors que la réponse de savani sandip en laisse.
Rakesh
49

Dans mon cas, il s'avère que mon
nouveau serveur fonctionnait MySQL 5.5, l'
ancien serveur fonctionnait MySQL 5.6.
J'ai donc eu cette erreur en essayant d'importer le .sqlfichier que j'avais exporté depuis mon ancien serveur.

MySQL 5.5 ne prend pas en charge utf8mb4_unicode_520_ci, mais
MySQL 5.6 le fait.

La mise à jour MySQL 5.6sur le nouveau serveur a résolu le classement de l'erreur!

Si vous souhaitez conserver MySQL 5.5, vous pouvez:
- faire une copie de votre .sqlfichier exporté
- remplacer les instances de utf8mb4unicode520_ciet utf8mb4_unicode_520_ci
... par utf8mb4_unicode_ci
- importer votre .sqlfichier mis à jour .

SherylHohman
la source
2
C'est absolument la meilleure façon de le faire si vous avez un contrôle total sur votre serveur. Mettez à niveau le nouveau serveur pour qu'il corresponde à l'ancien serveur. Si vous n'avez pas accès pour mettre à niveau votre nouvel emplacement de serveur, la méthode de recherche-remplacement sera probablement correcte, mais dans tous les cas où vous pouvez simplement faire cette mise à niveau à la place, vous devriez le faire.
squarecandy
1
5.6 est quand 520 a été ajouté.
Rick James
Cela devrait être la bonne réponse. La plupart des autres solutions ressemblent plus à des hacks. Merci @SherylHohman
sawyerrken
30

Ouvrez le fichier sql dans votre éditeur de texte;

1. Rechercher: utf8mb4_unicode_ci Remplacer: utf8_general_ci (Tout remplacer)

2. Rechercher: utf8mb4_unicode_520_ci Remplacer: utf8_general_ci (Tout remplacer)

3. Rechercher: utf8mb4 Remplacer: utf8 (Tout remplacer)

Enregistrez et téléchargez!

VUUB
la source
Je suis vraiment content d'avoir trouvé votre solution à ce problème, je reçois cette erreur # 1273 depuis des jours et je n'ai tout simplement pas pu trouver une solution à cela
flying-dev
Gareautrain. Merci!
robbclarke le
15

il suffit de supprimer "520_"
utf8mb4_unicode_520_ciutf8mb4_unicode_ci

Shakil Hossain
la source
14

remplacement facile

sed -i 's/utf8mb4_unicode_520_ci/utf8mb4_unicode_ci/g' your_sql_file.sql
Scard
la source
2
Sur macOS:sed -i '' 's/utf8mb4_unicode_520_ci/utf8mb4_unicode_ci/g' your_sql_file.sql
Osvaldas
6

trouver et remplacer:

utf8mb4_unicode_520_ci

avec

utf8_general_ci

dans tout le fichier SQL

John
la source
3
generalet utf8sont les deux pas en arrière.
Rick James
3

En retard à la fête, mais au cas où cela se produirait avec une WORDPRESSinstallation:

#1273 - Unknown collation: 'utf8mb4_unicode_520_ci

Dans phpmyadmin, sous export method> Format-specific options(exportation personnalisée)

Mis à : MYSQL40

Si vous essayez d'importer maintenant, vous pourriez maintenant recevoir un autre message d'erreur:

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

C'est parce que l'ancienne TYPEoption qui était synonyme de a ENGINEété supprimée dans MySQL 5.5.

Ouvrez votre .sqlfichier, recherchez et remplacez toutes les instances

du TYPE=auENGINE=

Maintenant, l'importation devrait se dérouler sans problème.

Obmerk Kronen
la source
3

Obtention de l'erreur de classement # 1273 - Classement inconnu: 'utf8mb4_unicode_520_ci' est causé par la différence entre la version MySQL à partir de laquelle vous exportez et notre serveur MySQL vers lequel vous importez. Fondamentalement, la bibliothèque Wordpress pour les versions plus récentes vérifie sur quelle version de SQL votre site est exécuté. S'il utilise MySQL version 5.6 ou plus, il suppose l'utilisation d'un nouvel algorithme de classement Unicode amélioré (UCA) appelé «utf8mb4_unicode_520_ci». C'est génial à moins que vous ne finissiez par déplacer votre site WordPress d'une version 5.6 plus récente de MySQL vers une version antérieure antérieure à la version 5.6 de MySQL.

Pour résoudre ce problème, vous devrez soit modifier votre fichier d'exportation SQL et effectuer une recherche et un remplacement, en changeant toutes les instances de «utf8mb4_unicode_520_ci» en «utf8mb4_unicode_ci». Ou suivez les étapes ci-dessous si vous avez un PHPMyAdmin:

  1. Cliquez sur l'onglet Exporter pour la base de données
  2. Cliquez sur le bouton radio Personnalisé.
  3. Accédez à la section intitulée Options spécifiques au format et modifiez la liste déroulante du système de base de données ou d'un ancien serveur MySQL pour maximiser la compatibilité de sortie avec: de NONE à MYSQL40.
  4. Faites défiler vers le bas et cliquez sur GO.
Mushfiqur Rahman
la source
1

Dans mon cas, je le remplace utf8_general_cipar sed comme ceci:

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 

Après cela, je peux l'importer sans aucun problème.

Achu
la source