sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo corregir errores de valor de cadena incorrectos?

ACTUALIZAR a la siguiente respuesta:

En el momento en que se hizo la pregunta, "UTF8" en MySQL significaba utf8mb3 . Mientras tanto, utf8mb4 se agregó, pero que yo sepa, MySQLs "UTF8" no se cambió para significar utf8mb4 .

Eso significa que tendrías que poner específicamente "utf8mb4", si lo dices en serio (y deberías usar utf8mb4 )

Mantendré esto aquí en lugar de solo editar la respuesta, para dejar en claro que todavía hay una diferencia al decir "UTF8"

Originales

No sugeriría la respuesta de Richies, porque está arruinando los datos dentro de la base de datos. No solucionaría su problema, pero trataría de "ocultarlo" y no podría realizar operaciones esenciales de la base de datos con los datos basura.

Si encuentra este error, los datos que está enviando no están codificados en UTF-8 o su conexión no es UTF-8. Primero, verifique que la fuente de datos (un archivo, ...) realmente es UTF-8.

Luego, verifique la conexión de su base de datos, debe hacer esto después de conectarse:

SET NAMES 'utf8mb4';
SET CHARACTER SET utf8mb4;

A continuación, verifique que las tablas donde se almacenan los datos tengan el juego de caracteres 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`
;

Por último, verifique la configuración de su base de datos:

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

Si la fuente, el transporte y el destino son utf8mb4, su problema desaparece;)