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