Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment corriger les erreurs de valeur de chaîne incorrecte ?

MISE À JOUR à la réponse ci-dessous :

Au moment où la question a été posée, "UTF8" dans MySQL signifiait utf8mb3 . En attendant, utf8mb4 a été ajouté, mais à ma connaissance MySQLs "UTF8" n'a pas été changé pour signifier utf8mb4 .

Cela signifie que vous devez spécifiquement mettre "utf8mb4", si vous le pensez (et vous devez utiliser utf8mb4 )

Je vais garder cela ici au lieu de simplement modifier la réponse, pour préciser qu'il y a toujours une différence en disant "UTF8"

Original

Je ne suggérerais pas à Richies de répondre, car vous bousillez les données dans la base de données. Vous ne résoudriez pas votre problème mais essayez de le "cacher" et de ne pas être en mesure d'effectuer des opérations de base de données essentielles avec les données merdiques.

Si vous rencontrez cette erreur, soit les données que vous envoyez ne sont pas encodées en UTF-8, soit votre connexion n'est pas en UTF-8. Tout d'abord, vérifiez que la source de données (un fichier, ...) vraiment est UTF-8.

Ensuite, vérifiez votre connexion à la base de données, vous devriez le faire après vous être connecté :

SET NAMES 'utf8mb4';
SET CHARACTER SET utf8mb4;

Ensuite, vérifiez que les tables dans lesquelles les données sont stockées ont le jeu de caractères utf8mb4 :

SELECT
  `tables`.`TABLE_NAME`,
  `collations`.`character_set_name`
FROM
  `information_schema`.`TABLES` AS `tables`,
  `information_schema`.`COLLATION_CHARACTER_SET_APPLICABILITY` AS `collations`
WHERE
  `tables`.`table_schema` = DATABASE()
  AND `collations`.`collation_name` = `tables`.`table_collation`
;

Enfin, vérifiez les paramètres de votre base de données :

mysql> show variables like '%colla%';
mysql> show variables like '%charac%';

Si la source, le transport et la destination sont en utf8mb4, votre problème est résolu;)