Cuando MySQL confunde la ñ con la n

Llevaba 3 días tratando de resolver un problema con mi base de datos.

No me quejo, llevo mucho tiempo trabajando con MySQL como mi base de datos principal sin problema alguno, de hecho el error fue mío por desconocer la codificación adecuada para el proyecto.

El problema era que cuando hacia una consulta no me mostraba los datos correctamente. Por ejemplo si le pedía la información relacionada con el articulo AÑ056 , me regresaba los datos del articulo AÑ056 y los del AN056 !!!, no distinguía la diferencia entre uno y otro. ¡No distinguía la diferencia entre la n y la ñ!

Al principio creí que era un problema del Conector ODBC que uso en windows, pero después de hacer unas consultas en google quedó descartado.

Segundo sospechoso fue la codificación y es que por default mysql en windows se instala con latin1, al parercer esta codificación presenta problemas al momento de crear índices con caracteres especiales como la ñ o letras acentuadas.

Por cierto, sigan mi consejo, es importantísimo hacer un respaldo de los datos, por estar concentrado en los cambios de la codificación por poco y pierdo los datos. Y si es posible trabajen en una base de datos local de pruebas para no interrumpir el trabajo de la base en producción.

Después de hacer varios intentos y de recuperar en cada uno de ellos mi base de datos original, el problema se solucionó cambiando la codificación de toda la base de datos y en especial en el campo que me estaba ocasionando problemas.

database encode

La base de datos quedó de la siguiente forma:

Character set: utf8
Collation: utf8_unicode_ci

La codificación del campo fue la que me causó mayor problema (y es el origen del bug), intenté con varias codificaciones hasta que dí con la que me funcionó, por ejemplo si intentaba con un collation utf8_general_ci me daba un error de Duplicate entry, supongo que era un error por el valor del campo llave duplicado.

Y con un utf8_unicode_ci , me decía que los datos eran demasiado grandes para el campo.

Al final quedó de la siguiente manera:

Cambiando la codificación del campo

Character set: utf8
Collation: utf8_spanish_ci

Eso solucionó el problema y al hacer las consultas me regresó correctamente los registros adecuados. 🙂

Pasen un buen fin de semana !!!

3 comentarios en “Cuando MySQL confunde la ñ con la n”

  1. en realidad no “confunde” si no que es lo más adecuado, ya que si utilizas para buscar por ejemplo: “hernández” te regresaría “hernandez” y “hernández”, de otra forma tendrías que buscar manualmente con el acento y sin el. La solución está en el campo que quieras que sea la búsqueda específica, la pongas como tipo binary ( varbinary por ejemplo) o de tipo blog, de tal forma que la búsqueda será exacta inclusive respetando mayúsculas y minúsculas.

    saludos

    Responder

¡Me encantaría saber que opinas!

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.