Problème généralement rencontrè à l'import.

Par exemple sur une commande mysql -u root --default-character-set=utf8 < .\__restoreData.sql

J'ai rencontré le problème quand il y avait des emoji's dans ddes champs texte ou blob.

C'est un problème de compatibilité d'encodage.

Ma DB est bien crée en DEFAULT CHARACTER SET utf8mb4
la rubrique en longtext COLLATE utf8mb4_unicode_ci NOT NULL,
et la table en DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci

A priori c'est le serveur MYsql ou MAriadb qui est mal configuré.

Pour solutionner le problème j'ai juste rajouté dan le my.ini ou le my.cnf au paragraphe

[mysqld]
....
character-set-client-handshake = FALSE
character-set-server = utf8mb4

Cela m'a solutionné le problème.

Toutefois, si je ne mets que la première ligne, je constate que l'encodage n'est pas bon lors de l'import de la table.
C'est donc bien un problème d'encodage mal configuré.

On peut aussi solutionner le problème en modifiant la ligne de commande par

Par exemple sur une commande mysql -u root --default-character-set=utf8mb4 < .\__restoreData.sql

L'explication étant qu'actuellement dans mysql utf8 est un alias de utf8mb3 (codage des caractères limité à 3 octets) alors que le norme est plutôt sur 4 octet.

Apparemment le jeu de caractère utf8 devrait disparaitre dans les prochaines versions de mysql.