2010-04-28 21 views
7

Por lo tanto, nuestro entorno de destino es linux, lo que hace que mysql distinga entre mayúsculas y minúsculas por defecto. Soy consciente de que podemos hacer que nuestro entorno Linux no distinga entre mayúsculas y minúsculas con la variable low_case_table_names, pero preferiríamos no hacerlo. Nos han mordido algunas veces con un desajuste de caso porque nuestras plataformas de desarrollo son OSX, y mysql no distingue entre mayúsculas y minúsculas.¿Puedo forzar la distinción entre mayúsculas y minúsculas del nombre de tabla MySql en sistemas de archivos que no distinguen entre mayúsculas y minúsculas?

¿Existe alguna manera de forzar que los nombres de las tablas distingan entre mayúsculas y minúsculas en mi instalación OSX de MySql (5.0.83 si eso es importante) para detectar un error de nombre de tabla antes de implementar en los servidores de integración que se ejecutan en Linux ?

Respuesta

-1

Lo mejor que puedes hacer aquí es corregir los nombres de tu tabla para que no haya ningún conflicto. Diferenciar únicamente por caso es una mala idea y genera confusión (como probablemente sabrá).

Pero intente utilizar comillas simples alrededor de los nombres de la tabla durante la creación. Esto funciona en SUSE/Linux/MySQL 5.0 con el navegador de consultas ejecutándose en Windows.

CREATE TABLE `MySchema`.`test` (
    `COMMENT` text 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 


CREATE TABLE `MySchema`.`Test` (
    `COMMENT` text 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

insert into MySchema.test values ('this is table test'); 
insert into MySchema.Test values ('this is table Test'); 


select * from MySchema.test; 
select * from MySchema.Test; 

¿Quieres que falle si un cliente no sensible al caso solicita una tabla con el caso incorrecto? Creo que debería fallar si la base de datos MySQL se ejecuta en Linux.

Salida this link "Una excepción notable es Mac OS X, que está basado en UNIX, pero utiliza un tipo de sistema de archivos por defecto (HFS +) que no es sensible a mayúsculas. Sin embargo, Mac OS X es compatible con volúmenes UFS, que son mayúsculas y minúsculas igual que en cualquier Unix ".

+1

Nuestros nombres de tabla no están en conflicto. Pero a veces tenemos un código que descapitaliza los nombres de las tablas, y la naturaleza insensible a las mayúsculas y minúsculas del sistema de archivos OS X por defecto significa que no vemos el error hasta que lo implementemos en Linux. –

1

Conjunto lower_case_table_names=0 en my.cnf.

Si ha instalado a través de homebrew, el archivo está aquí: /usr/local/Cellar/mysql/<version>/my.cnf

consultas con las tablas deben ser ahora entre mayúsculas y minúsculas: mysql> select count(*) from user; ERROR 1146 (42S02): Table 'xxx.user' doesn't exist mysql> select count(*) from User; +----------+ | count(*) | +----------+ | 1 | +----------+ 1 row in set (0.00 sec)

Cuestiones relacionadas