Mayúsculas y minúsculas en MySQL

Algo a tener en cuenta cuando trabajamos con MySQL y utilizamos diferentes sistemas operativos es que en Windows y Unix, el comportamiento en cuanto al tratamiento de mayúsculas y minúsculas por MySQL es distinto.
Por un lado, las bases de datos y tablas de MySQL en Windows no son sensibles a mayúsculas/minúsculas por lo que dará igual como las creemos o consultemos. En cambio, en las distintas variedades de Unix, ya sea Solaris, OS X, GNU/Linux, etc sí que hay sensibilidad de mayúsculas y minúsculas por lo que si venimos de Windows tendremos problemas si no cambiamos «el chip». Digamos que por defecto MySQL depende de como gestione el sistema operativo las mayus/minus.

Lo que podemos hacer en estos casos es utilizar la variable de MySQL lower_case_table_names a nivel de my.cnf o my.ini (Unix y Windows respectivamente) para forzar como manejar las mayúsculas y minúsculas en MySQL. Los valores disponibles son:

  • 0: los nombres de las bases de datos y tablas se guardarán en disco tal y como se han especificado en la creación (CREATE DATABASE y CREATE TABLE). Es decir, MySQL es sensible a mayúsculas y minúsculas.
  • 1: los nombres de las bases de datos y tablas se guardarán en disco siempre en minúsculas independientemente de como se escriban.
  • 2: los nombres de las bases de datos y tablas se guardarán en disco tal y como se han especificado en la creación (CREATE DATABASE y CREATE TABLE) pero a la hora de ejecutar consultas MySQL lo convierte a minúsculas por lo que no es sensible a mayúsculas.

El valor por defecto en Windows es «1» mientras que en Unix es «0» excepto en OS X que es «2».

Ejemplo de como especificar la variable en el archivo de configuración:

/etc/my.cnf

lower_case_table_names=1