J'ai une base de données WordPress sur ma machine locale que je souhaite transférer vers un phpMyAdmin hébergé sur cPanel. Cependant, lorsque j'essaye d'importer la base de données dans l'environnement, j'obtiens toujours cette erreur:
#1273 - Unknown collation: 'utf8mb4_unicode_ci'
J'ai essayé de Google et la seule solution que je peux trouver est cette erreur phpmysql - # 1273 - # 1273 - Collation inconnue: 'utf8mb4_general_ci' qui, comme à présent, n'aide pas beaucoup. J'ai essayé d'effacer les cookies mais cela ne fonctionnera toujours pas. Veuillez aider!
mysql
wordpress
phpmyadmin
cpanel
Wairimu Murigi
la source
la source
Réponses:
J'ai eu le même problème car tous nos serveurs exécutent des versions plus anciennes de MySQL. Cela peut être résolu en exécutant un script PHP. Enregistrez ce code dans un fichier et exécutez-le en entrant le nom de la base de données, l'utilisateur et le mot de passe et cela changera le classement de
utf8mb4/utf8mb4_unicode_ci
àutf8/utf8_general_ci
la source
mysqldump --compatible=mysql4
db-convert.php
mysqldump --compatible=mysql4
ou la réponse ci-dessous est une meilleure option. Je ne pense pas que ce soit une bonne idée de changer quelque chose comme ça sur un site en direct. Mieux vaut exporter dans le bon format, ou si ce n'est pas une option, éditez le fichier exporté.La technique de cet article a fonctionné pour moi
1) Cliquez sur l'onglet "Exporter" de la base de données
2) Cliquez sur le bouton radio "Personnalisé"
3) Allez dans la section intitulée "Options spécifiques au format" et modifiez la liste déroulante pour "Système de base de données ou ancien serveur MySQL pour maximiser la compatibilité de sortie avec:" de NONE à MYSQL40.
4) Faites défiler vers le bas et cliquez sur "GO".
Je ne suis pas sûr que cela entraîne une perte de données, mais la seule fois où je l'ai essayé, je n'en ai pas remarqué. Personne non plus n'a répondu dans les forums liés à ci-dessus.
Edit 8/12/16 - Je pense que l'exportation d'une base de données de cette manière me fait perdre des données enregistrées dans les widgets Black Studio TinyMCE Visual Editor , bien que je n'ai pas effectué plusieurs tests pour confirmer.
la source
Si vous avez déjà exporté un
.sql
fichier, la meilleure chose à faire est de rechercher et de remplacer les éléments suivants si vous les avez dans votre fichier:utf8mb4_0900_ai_ci
àutf8_unicode_ci
utf8mb4
àutf8
utf8_unicode_520_ci
àutf8_unicode_ci
Il remplacera
utf8mb4_unicode_ci
àutf8_unicode_ci
. Maintenant , vous allez à votre phpMyAdmin cPanel et définissez le classement DB àutf8_unicode_ci
travers des opérations> Collation .Si vous exportez vers un
.sql
, il est préférable de changer le format de la façon dont vous exportez le fichier. Consultez la réponse d'Evster (c'est dans la même page que celle-ci)la source
sed -i.bak s/utf8mb4/utf8/g FILE_NAME
. Cela trouvera toutes les occurrences deutf8mb4
dans FILE_NAME et les remplacera parutf8
lors de l'enregistrement d'une copie du fichier d'origine dans FILE_NAME.bak. Vous devrez peut-être le modifier pour spécifier la coalition exacte dans votre cas, mais c'est un début :)vi dump.sql
puis via le faire::%s/uf8mb4/utf8/g
.utf8_0900_ai_ci
parutf8_unicode_ci
j'utilise ceci sous linux:
puis restaurez votre_fichier.sql
la source
sed -i '' ....
marche.sed -i 's/utf8_0900_ai_ci/utf8_general_ci/g' your_file.sql
Wordpress 4.2 a introduit la prise en charge du codage de caractères "utf8mb4" pour des raisons de sécurité , mais seul MySQL 5.5.3 et supérieur le prend en charge. La façon dont le programme d'installation (et le programme de mise à jour) gère cela est de vérifier votre version de MySQL et votre base de données ne sera mise à niveau vers utfmb4 que si elle est prise en charge .
Cela semble très bien en théorie, mais le problème (comme vous l'avez découvert) est lorsque vous migrez des bases de données d'un serveur MySQL qui prend en charge utf8mb4 vers un autre qui ne le fait pas. Bien que l'inverse devrait fonctionner, il s'agit essentiellement d'une opération à sens unique.
Comme indiqué par Evster, vous pourriez avoir du succès en utilisant la fonction "Exporter" de PHPMYAdmin. Utilisez " Méthode d'exportation: Personnalisée " et pour le " Système de base de données ou un ancien serveur MySQL pour maximiser la compatibilité de sortie avec: " sélectionnez dans la liste déroulante " MYSQL 40 ".
Pour un export en ligne de commande à l'aide de mysqldump. Jetez un œil au drapeau:
Remarque: S'il y a des caractères de 4 octets dans la base de données, ils seront corrompus.
Enfin, pour quiconque utilise le populaire plugin WP Migrate DB PRO, un utilisateur de ce fil de discussion Wordpress.org rapporte que la migration est toujours gérée correctement, mais je n'ai rien trouvé d'officiel.
Pour le moment, il ne semble pas y avoir de moyen de désactiver la mise à jour de la base de données. Donc, si vous utilisez un flux de travail dans lequel vous migrez un site d'un serveur ou d'un hôte local avec MySQL> 5.5.3 vers un site qui utilise une version plus ancienne de MySQL, vous n'aurez peut-être pas de chance.
la source
TYPE=MyISAM
qui a été supprimé dans la v5.1. Effectuez une recherche et remplacez parENGINE=MyISAM
. Je ne pouvais pas voir un moyen de contourner cela en utilisant lesmysqldump
options de sortie.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
.sql
fichier que j'avais exporté depuis mon ancien serveur.MySQL 5.5 ne prend pas en charge
utf8mb4_unicode_520_ci
, maisMySQL 5.6 le fait.
La mise à jour
MySQL 5.6
sur 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
.sql
fichier exporté- remplacer les instances de
utf8mb4unicode520_ci
etutf8mb4_unicode_520_ci
... par
utf8mb4_unicode_ci
- importer votre
.sql
fichier mis à jour .la source
mysql-server-5.6
package que vous pouvez installer qui supprimera la version 5.5 automatiquement).Il y a une ligne dans wp-config.php:
Si vous suivez les instructions de Markouver / Evster , n'oubliez pas de changer cette ligne sur le serveur de production en
afin de corriger les caractères brisés de 4 octets
la source
define('DB_COLLATE', 'utf8_general_ci');
. Cela m'a aidé.Après de longues recherches, j'ai trouvé la solution ci-dessus:
Tout d'abord, vous changez la valeur par défaut de wp-config.php> Database DB_CHARSET en "utf8"
Cliquez sur l'onglet "Exporter" de la base de données
Cliquez sur le bouton radio "Personnalisé"
Allez dans la section intitulée "Options spécifiques au format" et modifiez la liste déroulante pour "Système de base de données ou ancien serveur MySQL pour maximiser la compatibilité de sortie avec:" de NONE à MYSQL40.
Faites défiler vers le bas et cliquez sur OK
Alors vous êtes sur.
la source
On dirait que votre hôte ne fournit pas de version MySQL capable d'exécuter des tables avec le classement utf8mb4.
Les tables WordPress ont été changées en utf8mb4 avec la version 4.2 (publiée le 23 avril 2015) pour prendre en charge Emojis, mais vous avez besoin de MySQL 5.5.3 pour l'utiliser.5.5.3. date de mars 2010, il devrait donc normalement être largement disponible. Cna vous vérifiez si votre hébergeur fournit cette version?
Sinon, et une mise à niveau n'est pas possible, vous devrez peut-être rechercher un autre hébergeur pour exécuter les dernières versions de WordPress (et vous devez toujours le faire pour des raisons de sécurité).
la source
J'ai donc résolu de cette manière, de MySQL 5.6 à MySQL 5.5:
(Facultatif) Créez un
.sql.gz
fichier:Explication
Comme expliqué dans cette réponse , ceci est juste l'équivalent de ces options de phpMyAdmin: "Système de base de données ou ancien serveur MySQL pour maximiser la compatibilité de sortie avec:" menu déroulant "MYSQL 40" .
Nous avons besoin de ceci, pour résoudre ce problème:
la source
$ sed -i'' 's/TYPE=InnoDB/ENGINE=InnoDB/g' database_name.sql
. Si vous souhaitez conserver une copie commedatabase_name.sql.bak
avant le remplacement de sed:$ sed -i'bak' 's/TYPE=InnoDB/ENGINE=InnoDB/g' database_name.sql
sed
.--compatible=ansi
optionJ'ai également rencontré ce problème. La solution qui a fonctionné pour moi était d'ouvrir la base de données locale avec Sequel Pro et de mettre à jour l' encodage et le classement en utf8 / utf8_bin pour chaque table avant l'importation.
la source
Le moyen le plus simple de le faire est d'exporter votre base de données vers
.sql
, de l'ouvrir sur Notepad ++ et de "Rechercher et remplacer" leutf8mb4_unicode_ci
versutf8_unicode_ci
et également de remplacerutf8mb4
versutf8
. N'oubliez pas non plus de changer le classement de la base de données enutf8_unicode_ci
(Opérations> Collation).la source
ouvrez le fichier sql sur Notepad ++ et
ctrl + H.
ensuite vous mettez "utf8mb4
" sur la recherche et "utf8
" sur le remplacement. Le problème sera alors résolu.la source