Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

MySQL case insensitive

Estas en el tema de MySQL case insensitive en el foro de Mysql en Foros del Web. Hola, ¿Alguien sabe si hay alguna manera para hacer que los nombres de las tablas en MySQL sobre linux, sean "case insensitive"? La cuestión es ...
  #1 (permalink)  
Antiguo 30/11/2007, 15:47
 
Fecha de Ingreso: mayo-2005
Mensajes: 16
Antigüedad: 19 años, 6 meses
Puntos: 0
MySQL case insensitive

Hola,

¿Alguien sabe si hay alguna manera para hacer que los nombres de las tablas en MySQL sobre linux, sean "case insensitive"?

La cuestión es que hemos cambiado de un servidor win2000 a un linux y tenemos una aplicación en varias tiendas escrita en windows y de código cerrado, de la que no podemos prescinidir al menos de momento, escrita muy chapuceramente y a veces hace referencias a las tablas en mayusculas y otras en minuscula, ej: Autores y autores.


de antemano agradecido y espero que exista alguna opción "magica"
  #2 (permalink)  
Antiguo 03/12/2007, 08:27
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Re: MySQL case insensitive

La cosa se resuelve según el capitulo 9 del manual de referencia:

La forma en que los nombres de tablas y bases de datos se almacenan en el disco y se usan en MySQL se define mediante la variable de sistema lower_case_table_names, a la cual se le puede establecer un valor al iniciar mysqld. lower_case_table_names puede tomar uno de los siguientes valores:

0 (cero):
Los nombres de tablas y bases de datos se almacenan en disco usando el esquema de mayúsculas y minúsculas especificado en las sentencias CREATE TABLE o CREATE DATABASE.
Las comparaciones de nombres son sensibles a mayúsculas. Esto es lo predeterminado en sistemas Unix. Nótese que si se fuerza un valor 0 con --lower-case-table-names=0 en un sistema de ficheros insensible a mayúsculas y se accede a tablas MyISAM empleando distintos esquemas de mayúsculas y minúsculas para el nombre, esto puede conducir a la corrupción de los índices.

1 (uno):
Los nombres de tablas se almacenan en minúsculas en el disco y las comparaciones de nombre no son sensibles a mayúsculas. MySQL convierte todos los nombres de tablas a minúsculas para almacenamiento y búsquedas. En MySQL 5.0, este comportamiento también se aplica a nombres de bases de datos y alias de tablas. Este valor es el predeterminado en Windows y Mac OS X.

2 (dos)
Los nombres de tablas y bases de datos se almacenan en disco usando el esquema de mayúsculas y minúsculas especificado en las sentencias CREATE TABLE o CREATE DATABASE, pero MySQL las convierte a minúsculas en búsquedas. Las comparaciones de nombres no son sensibles a mayúsculas. Nota: Esto funciona solamente en sistemas de ficheros que no son sensibles a mayúsculas. Los nombres de las tablas InnoDB se almacenan en minúsculas, como cuando lower_case_table_names vale 1.

En MySQL 5.0 para Windows y Mac OS X, el valor predeterminado de lower_case_table_names es 1.

Si se utiliza MySQL en una sola plataforma, normalmente no habrá que cambiar la variable lower_case_table_names. Sin embargo, se pueden encontrar dificultades si se desea transferir tablas entre plataformas cuyos sistemas de ficheros tengan diferente sensibilidad a mayúsculas. Por ejemplo, en Unix, se pueden tener dos tablas diferentes llamadas mi_tabla y MI_TABLA, pero en Windows, estos dos nombres se consideran idénticos. Para evitar problemas de transferencia de datos originados en la combinación de mayúsculas y minúsculas de los nombres de bases de datos y tablas, se tienen dos opciones:

• Emplear lower_case_table_names=1 en todos los sistemas. La principal desventaja de esto es que al emplear SHOW TABLES o SHOW DATABASES no se verán los nombres en su combinación original de minúsculas y mayúsculas.

• Emplear lower_case_table_names=0 en Unix y lower_case_table_names=2 en Windows. Esto preserva la combinación de mayúsculas y minúsculas en los nombres de bases de datos y tablas. La desventaja es que hay que tener la precaución de que las consultas siempre se refieran a las bases de datos y tablas en Windows respetando la combinación correcta de mayúsculas y minúsculas. Si se transfirieran las consultas a Unix, donde las mayúsculas y minúsculas son significativas, no funcionarán si no se utiliza la combinación correcta.

Excepción: Si se utilizan tablas InnoDB, se debería establecer lower_case_table_names en 1 en todas las plataformas para forzar a que los nombres sean convertidos a minúsculas.
Notar que antes de establecer lower_case_table_names en 1 en Unix, se deberán convertir a
minúsculas los nombres de bases de datos y tablas existentes antes de reiniciar mysqld.
  #3 (permalink)  
Antiguo 30/04/2008, 10:08
 
Fecha de Ingreso: mayo-2005
Mensajes: 16
Antigüedad: 19 años, 6 meses
Puntos: 0
Sonrisa Re: MySQL case insensitive

Muchas gracias por la respuesta. Es justo lo que necesitaba.
  #4 (permalink)  
Antiguo 30/04/2008, 14:44
Avatar de yetrus  
Fecha de Ingreso: marzo-2006
Mensajes: 252
Antigüedad: 18 años, 7 meses
Puntos: 0
Re: MySQL case insensitive

Tengo el mismo problema, las consultas de codigo para algunas tablas estan en minusculas y mayusculas, ademas de que algunas tablas esten en mayus...y otras en minus..
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 13:28.