jueves, 3 de mayo de 2012

Sensibilidad a mayúsuclas y minúsculas de identificadores

Me he encontrado con uno de las pequeñas cosas que te quitan gran tiempo en resolverlas, la variable lower_case_table_names. 

En MySQL, las bases de datos se corresponden con directorios dentro del directorio de datos. Cada tabla dentro de una base de datos corresponde a por lo menos un fichero dentro del directorio de la base de datos (y posiblemente más, dependiendo del motor de almacenamiento). Por lo tanto, es la sensibilidad a mayúsculas del sistema operativo subyacente la que determina la sensibilidad a mayúsculas en los nombres de tablas y bases de datos. Esto significa que los nombres de las tablas y las bases de datos son sensibles a mayúsculas en la mayoría de las variedades de Unix, pero no lo son en Windows. Una notable excepción es Mac OS X, el cual se basa en Unix pero utiliza en forma predeterminada un sistema de ficheros (HFS+) que no es sensible a mayúsculas. No obstante, Mac OS X también soporta volúmenes UFS, los cuales son sensibles a mayúsculas tal como cualquier Uni.

Para cambiar el valor de esta variable, lo unico que debemos hacer es localizar y editar el fichero my.ini, por lo general estara dentro del directorio bin del MySql, y agregar lo siguiente:

[mysqld]
lower_case_table_names=2

Hecho esto, solo queda reiniciar el servicio y listo

Referencia: http://dev.mysql.com/doc/refman/5.0/en/identifier-case-sensitivity.html