Después de notar que una aplicación tendía a descartar correos electrónicos aleatorios debido a errores de valor de cadena incorrectos, fui y cambié muchas columnas de texto para usar el utf8
conjunto de caracteres de columna y el intercalado de columna predeterminado ( utf8_general_ci
) para que los aceptara. Esto solucionó la mayoría de los errores e hizo que la aplicación dejara de recibir errores de sql cuando también llegó a correos electrónicos no latinos.
A pesar de esto, algunos de los correos electrónicos siguen causando errores incorrectos en el valor de la cadena del programa: (Incorrect string value: '\xE4\xC5\xCC\xC9\xD3\xD8...' for column 'contents' at row 1)
La columna de contenido es un MEDIUMTEXT
datatybe que utiliza el utf8
conjunto de caracteres de la utf8_general_ci
columna y la clasificación de la columna. No hay banderas que pueda alternar en esta columna.
Teniendo en cuenta que no quiero tocar ni siquiera mirar el código fuente de la aplicación a menos que sea absolutamente necesario:
- ¿Qué está causando ese error? (sí, sé que los correos electrónicos están llenos de basura aleatoria, pero pensé que utf8 sería bastante permisivo)
- ¿Cómo puedo arreglarlo?
- ¿Cuáles son los efectos probables de tal solución?
Una cosa que consideré fue cambiar a un utf8 varchar ([algún número grande]) con la bandera binaria activada, pero no estoy familiarizado con MySQL, y no tengo idea si esa solución tiene sentido.