343 votes

#1273 - Collation inconnue : 'utf8mb4_unicode_520_ci'

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

#1273 – Unknown collation: ‘utf8mb4_unicode_520_ci’

Toute aide serait appréciée !

78 votes

sed -i 's/utf8mb4_unicode_520_ci/utf8mb4_unicode_ci/g' file.sql

6 votes

Dans l'océan de solutions de recherche et de remplacement ci-dessous, n'oubliez pas de consulter d'abord la réponse de @SherylHohman - mettez simplement à jour mariadb / mysql 5.6 pour que votre serveur prenne en charge cette collation.

1 votes

Quelle version de WordPress ? Voir make.wordpress.org/core/2015/04/02/the-utf8mb4-upgrade

497voto

Sabba Keynejad Points 3190

Je pense que cette erreur est due au fait que le serveur local et le serveur live utilisent des versions différentes de MySQL. Pour résoudre ce problème :

  1. Ouvrez le fichier sql dans votre éditeur de texte
  2. Rechercher et remplacer tous les utf8mb4_unicode_520_ci con utf8mb4_unicode_ci
  3. Sauvegarder et télécharger vers une nouvelle base de données mySql

J'espère que cela vous aidera enter image description here

12 votes

HELL NO !!! Il a été largement démontré que utf8mb4_unicode_520_ci tiene beaucoup meilleure prise en charge de l'UTF-8 que utf8mb4_unicode_ci ! Sauce : mysql.rjweb.org/doc.php/charcoll#best_practice avec une clarification visuelle prouvant la supériorité du 520_ci : mysql.rjweb.org/utf8_collations.html

13 votes

@John, Les articles que vous avez mis en lien 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 est mal écrit, même s'il semble contenir quelques bonnes informations. La collation 520 utilise une version plus récente de l'algorithme de collation Unicode (UCA - version 5.2.0) avec des poids différents, mais dire qu'elle "supporte beaucoup mieux l'UTF-8" semble plus qu'exagéré.

2 votes

Supposons qu'un organisme de normalisation (Unicode) fasse en sorte que chaque nouvelle version (5.20) soit "meilleure" qu'une version plus ancienne (4.0).

405voto

savani sandip Points 1502

Vous pouvez résoudre ce problème en trouvant

ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;

dans votre .sql et l'échanger avec le fichier

ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;

41 votes

Je recommande la réponse de Sabba ( stackoverflow.com/a/44122258/168309 ) car il conserve le format utf8mb4

7 votes

La solution ci-dessous de @Sabba Keynejad est meilleure à mon avis, puisqu'elle conserve le mb4, vous devriez l'essayer en premier.

0 votes

Remarque : j'ai dû remplacer cela à plusieurs endroits dans le fichier SQL. Il y a aussi des endroits où j'ai dû faire stackoverflow.com/a/44122258/1436129 ci-dessous également.

69voto

SherylHohman Points 3894

Dans mon cas, il s'avère que mon
un nouveau serveur était en cours d'exécution MySQL 5.5 ,
l'ancien serveur fonctionnait MySQL 5.6 .
J'ai donc obtenu cette erreur lorsque j'ai essayé d'importer le fichier .sql que j'avais exporté de mon ancien serveur.

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

Mise à jour de MySQL 5.6 sur le nouveau serveur résolu collation l'erreur !

Si vous souhaitez conserver MySQL 5.5, vous pouvez le faire :
- faites une copie de votre fichier exporté .sql archivo
- remplacent les instances de utf8mb4unicode520_ci y utf8mb4_unicode_520_ci
...avec utf8mb4_unicode_ci
- importer votre mise à jour .sql fichier.

3 votes

C'est absolument la meilleure façon de procéder si vous avez le contrôle total de votre serveur. Mettez à jour le nouveau serveur pour qu'il corresponde à l'ancien. Si vous n'avez pas la possibilité de mettre à jour l'emplacement de votre nouveau serveur, la méthode "trouver-remplacer" conviendra probablement, mais dans tous les cas où vous pouvez effectuer cette mise à jour à la place, vous devriez le faire.

1 votes

5.6, c'est quand 520 a été ajoutée.

1 votes

C'est la bonne réponse. La plupart des autres solutions sont plutôt des bidouillages. Merci @SherylHohman

48voto

VUUB Points 126

Ouvrez le fichier sql dans votre éditeur de texte ;

1. Recherche : utf8mb4_unicode_ci Remplacer : utf8_general_ci (Remplacer tout)

2. Recherche : utf8mb4_unicode_520_ci Remplacer : utf8_general_ci (Remplacer tout)

3. Recherche : utf8mb4 Remplacer : utf8 (Remplacer tout)

Sauvegardez et téléchargez !

2 votes

Je suis vraiment content d'avoir trouvé votre solution, cela fait des jours que j'obtiens cette erreur #1273 et je n'ai pas trouvé de solution.

0 votes

Sauveur. Merci de votre attention !

38voto

Scard Points 126

Remplacement facile

sed -i 's/utf8mb4_unicode_520_ci/utf8mb4_unicode_ci/g' your_sql_file.sql

9 votes

Sur macOS : sed -i '' 's/utf8mb4_unicode_520_ci/utf8mb4_unicode_ci/g' your_sql_file.sql

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X