web-dev-qa-db-fra.com

ERREUR 1115 (42000): Jeu de caractères inconnu: 'utf8mb4'

J'ai un dump MySQL, que j'ai essayé de restaurer avec:

mysql -u"username" -p"password" --Host="127.0.0.1" mysql_db < mysql_db

Cependant, cela a jeté une erreur:

ERROR 1115 (42000) at line 3231: Unknown character set: 'utf8mb4'

Voici les lignes 3231 à 3233:

/*!50003 SET character_set_client  = utf8mb4 */ ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection  = utf8mb4_general_ci */ ;

J'utilise MySQL 5.1.69. Comment puis-je résoudre cette erreur?

50
saravanakumar

Votre version ne supporte pas ce jeu de caractères, je crois que c'est 5.5.3 qui l'a introduite. Vous devriez mettre à jour votre mysql vers la version que vous avez utilisée pour exporter ce fichier.

L'erreur est alors très claire: vous définissez un certain jeu de caractères dans votre code, mais votre version de mysql ne le prend pas en charge et ne le sait donc pas.

Selon https://dev.mysql.com/doc/refman/5.5/en/charset-unicode-utf8mb4.html :

utf8mb4 est un sur-ensemble d'utf8

alors peut-être y at-il une chance que vous puissiez simplement le faire utf8, fermez les yeux et espérez, mais cela dépend de vos données, et je ne le recommanderais pas.

66
Nanne

Tu peux essayer:

Ouvrir le fichier sql par l'éditeur de texte rechercher et remplacer tout

utf8mb4 to utf8

Importer à nouveau.

27
IT Vlogs

Cela peut aider:

mysqldump --compatible=mysql40 -u user -p DB > dumpfile.sql

PHPMyAdmin a le même mode de compatibilité MySQL dans les options d’exportation "expert". Bien que cela n'a parfois rien fait.

Si vous n’avez pas accès via la ligne de commande ou via PHPMyAdmin, éditez le

/*!50003 SET character_set_client  = utf8mb4 */ ; 

bit à lire 'utf8' uniquement, c’est la voie à suivre.

7
wuxmedia

Il suffit d’ouvrir votre fichier SQL avec un éditeur de texte, de rechercher 'utf8mb4' et de le remplacer par utf8.J’espère que cela fonctionnera pour vous

2
Kamran Ali

Je réponds à la question - car je n'en ai trouvé aucune complète. Comme de nos jours , le jeu de caractères inconnu: 'utf8mb4' est assez répandu, de nombreux déploiements utilisant MySQL inférieur à 5.5.3 (version dans laquelle utf8mb4 a été ajouté).


L'erreur indique clairement que vous n'avez pas pris en charge utf8mb4 sur votre serveur de base de données stage.

Cause : vous avez probablement localement MySQL version 5.5.3 ou supérieure et, sur VPS Stage/Hosted, la version du serveur MySQL est inférieure à 5.5 .3

Les jeux de caractères utf8mb4 ont été ajoutés à MySQL 5.5.3.

utf8mb4 a été ajouté à cause d'un bogue dans le jeu de caractères utf8 de MySQL. Le traitement par MySQL du jeu de caractères utf8 n'autorise qu'un maximum de 3 octets pour un seul point de code, ce qui n'est pas suffisant pour représenter l'intégralité de Unicode (Maximum codepoint = 0x10FFFF). Parce qu'ils ne voulaient pas potentiellement casser quelque chose qui reposait sur ce comportement douteux, utf8mb4 a été ajouté. Documentation ici .

De SO réponse :


Vérification : pour vérifier, vous pouvez vérifier le jeu de caractères actuel et le classement de la base de données à partir de laquelle vous importez le dump - Comment puis-je voir quel jeu de caractères est une base de données/table/colonne MySQL ?


Solution 1 : il suffit de mettre à jour votre serveur MySQL vers la version 5.5.3 (au moins) - pour la prochaine fois, soyez conscient de la version que vous utilisez localement, pour l'étape et pour prod, tout doit être identique. Une suggestion - actuellement, le jeu de caractères par défaut devrait être utf8mb4.

Solution 2 (non recommandé): convertissez le jeu de caractères actuel en utf8, puis exportez les données - le chargement sera correct.

1
Nabeel Ahmed

Ouvrez votre fichier mysql avec n'importe quel outil d'édition

trouver

/ *! 40101 FIXER LES NOMS utf8mb4 * /;

changement

/ *! 40101 SET NOMS utf8 * /;

Enregistrez et téléchargez votre mysql.

0
senthilkumar

Comme certains l'ont suggéré ici, remplacer utf8mb4 par utf8 vous aidera à résoudre le problème. IMHO, j'ai utilisé sed pour les trouver et les remplacer afin d'éviter de perdre des données. De plus, ouvrir un fichier volumineux dans n’importe quel éditeur graphique est potentiellement pénible. Mes données MySQL grandissent de 2 Go. Le commandement ultime est

sed 's/utf8mb4_unicode_520_ci/utf8_unicode_ci/g' original-mysql-data.sql > updated-mysql-data.sql
sed 's/utf8mb4/utf8/g' original-mysql-data.sql > updated-mysql-data.sql

Terminé!

0
Tung

peut-être que toute la base de données + les tables + les champs devraient avoir le même jeu de caractères ??!

c'est à dire.

CREATE TABLE `politicas` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `Nombre` varchar(250) CHARACTER SET utf8 NOT NULL,
  -------------------------------------^here!!!!!!!!!!!
  PRIMARY KEY (`ID`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
  -------------------------------------------------^here!!!!!!!!!
0
T.Todua