icono_twiter icono LinkedIn
Alvaro Cuesta Viñolo

Consultor tecnológico de desarrollo de proyectos informáticos.

Puedes encontrarme en Autentia: Ofrecemos servicios de soporte a desarrollo, factoría y formación

Somos expertos en Java/JEE

Ver todos los tutoriales del autor

Fecha de publicación del tutorial: 2010-10-19

Tutorial visitado 8.966 veces Descargar en PDF
MySQL - Sensibilidad a mayúsculas/minúsculas de los nombres de las tablas.

MySQL - Sensibilidad a mayúsculas/minúsculas de los nombres de las tablas

0. Índice de contenidos

1. Introducción

En este tutorial vamos a ver cómo configurar la sensibilidad a mayúsculas/minúsculas de los nombres de las tablas en MySQL.
Tomemos como ejemplo el siguiente script:

CREATE TABLE Ciudad( 
   nombre VARCHAR(20), 
   codigo VARCHAR(3),
   superficie BIGINT,
   poblacion BIGINT);


Si lo ejecutamos en MySQL sobre Windows el resultado será la creación de una tabla llamada: ciudad.
Mientras que si el sistema es Linux el resultado será la creación de una tabla llamada: Ciudad.

Se debe a que la sensibilidad mayúsculas/minúsculas del sistema operativo determina la sensibilidad de los nombres de las tablas en MySQL.
Esto supone un problema si queremos que nuestros entornos de: desarrollo, pre-producción y producción sean homogéneos.

2. Entorno

El tutorial está escrito usando el siguiente entorno:

  • Hardware: MacBook Pro 15' (2.8 GHz Intel Core 2 Duo, 4GB DDR3 SDRAM).

  • Sistema Operativo: Mac OS X Snow Leopard 10.6.3.

  • NVIDIA GeForce 9600M GT 512Mb.

  • >Toshiba 500 Gb. 5400r.p.m.

3. Sensibilidad en MySQL

No vamos a profundizar en cómo gestiona MySQL las bases de datos, tablas o campos sino simplemente en cómo podemos controlar que los nombres de las tablas sean o no sensibles a mayúculas.

En MySQL podemos definir de forma explícita cómo queremos que almacene los nombres de las tablas, para ello tenemos que definir la variable lower_case_table_names.
Puede tomar los siguientes valores:
  • 0 -> Los tablas se almacenan con la sensibilidad especificada en la sentencia de creación.
    La comparación de sus nombres es sensible a mayúsculas/minúsculas.

  • 1 -> Las tablas se almacenan convirtiendo sus nombres a minúsculas.
    La comparación de sus nombres no es sensible a mayúsculas/minúsculas.

  • 2 -> Los tablas se almacenan con la sensibilidad especificada en la sentencia de creación.
    La comparación de sus nombres no es sensible a mayúsculas/minúsculas.
La opción "0" es la establecida por defecto en Sistemas Operativos Unix.
La opción "1" es la establecida por defecto en Sistemas Operativos Windows y Mac.

4. Configuración

Debemos tener en cuenta que la configuración de esta variable afecta a todos los esquemas contenidos en la base de datos.
En el fichero de configuración de MySQL my.cnf definimos la variable lower_case_table_names contenida en el bloque mysqld.

Un ejemplo de este fichero.

[mysqld]
lower_case_table_names = 1
port = 3306	

5. Conclusión

Cuando trabajamos con diferentes entornos sobre diferentes sistemas es importante elegir la solución que mejor se adapta a nuestas necesidades.
Según la documentación de MySQL: "Lo mejor es adoptar una convención consistente, cómo crear y referirse a bases de datos y tablas usando siempre minúsculas. Esto es lo recomendado para lograr máxima portabilidad y facilidad de uso."

Aún así, si definimos una configuración común a los sistemas, evitaremos tener que controlar de forma explícita la capitalidad de las tablas sin perder portabilidad. Esto no siempre es posible, ya que si en el entorno de producción tenemos más de una aplicación con MySQL, la capacidad de configuración del mismo está limitada, en este caso lo ideal es adaptarnos al sistema no configurable.

Espero os sea de utilidad.

A continuación puedes evaluarlo:

Regístrate para evaluarlo

Por favor, vota +1 o compártelo si te pareció interesante

Share |
Anímate y coméntanos lo que pienses sobre este TUTORIAL:

Fecha publicación: 2014-07-03-21:54:11

Autor: cucharacuchara

Hola buen día excelente aporte, de casualidad sabrán como hacer esto para las vistas?? lo e logrado para mis tablas pero con las antes mencionadas se me coloca todo en minúsculas.

Agradezco su atención.

Saludos desde Distrito Federal, México.

Fecha publicación: 2012-08-02-07:08:54

Autor: hendaviher

excelente información, lo tendré siempre en cuenta. muchas gracias