2011-06-06 11 views
34

Estoy trabajando en una base de datos MySQL en Windows.Cómo forzar nombres de tablas sensibles a mayúsculas y minúsculas?

Debo moverlo a un entorno Linux. La base de datos MySQL contiene muchas tablas y procedimientos almacenados que son CASE SENSITIVE.

Cuando hago una copia de seguridad de mi base de datos, todos los nombres de las tablas se escriben en minúsculas forzadas así que cuando lo restauro en Linux se queja porque no puede crear tablas duplicadas y procedimientos almacenados.

No tengo acceso a la configuración de MySQL en el entorno de Linux, por lo que no puedo cambiar la configuración de MySQL a modo insensible a mayúsculas y minúsculas.

¿Hay alguna manera de obligar a MySQL (v5.x) a utilizar nombres de tablas con mayúsculas y minúsculas en Windows?

+3

Sorprendentemente, la actualización de MySQL 5.1 a MySQL 5.5 resolvió mi problema. Ahora puedo usar el nombre de la tabla sensible a mayúsculas y minúsculas en el entorno de Windows, aunque sigue siendo imposible crear dos tablas con el mismo nombre que solo difiera en letter case (es decir, table_1 y TABLE_1) y, por supuesto, ¡nunca quiero hacer esto! –

Respuesta

3

Desafortunadamente no hay forma de hacer que MySQL en Windows se comporte al 100% como en Linux. Lo que puede hacer es ejecutar una VM mínima en Virtual Box o VMware player con TurnKey - MySQL Appliance.

En mi experiencia personal, he encontrado bastante útil tener una VM con una configuración similar al entorno de despliegue para diagnosticar problemas.

41

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

A continuación, añadir esta variable de sistema a la parte inferior de my.ini y reinicie MySQL:

/my.ini: lower_case_table_names = 2

+1

¡Eso funcionó para mí! Ahora, si solo los nombres de los esquemas también distinguen entre mayúsculas y minúsculas ... –

+1

Tenga en cuenta que esto solo funciona en sistemas de archivos que no distinguen entre mayúsculas y minúsculas, p.Mac y Windows, pero NO Linux, porque el fs predeterminado de Linux distingue entre mayúsculas y minúsculas (sin embargo, si crea un archivo fs insensible a mayúsculas y minúsculas en Linux y almacena allí los datos mysql, entonces funciona, pero eso no es tan sencillo, aunque es posible con la ayuda de google). Eliminado mi voto popular. –

+0

El Modo 2 en Windows * * no * realmente compara los nombres de una manera sensible a mayúsculas y minúsculas, no puede tener ThisTable y thistable. – simontemplar

0

Añadir esta propiedad a lower_case_table_names = 2 a my.ini

4

en las ventanas poner lower_case_table_names = 2 al final del archivo C: \ Datos de programa \ MySQL \ MySQL Server 5.7 \ my.ini

+0

https://mariadb.com/kb/en/mariadb/identifier-case-sensitivity/ Nota: mysql y mariadb son básicamente los mismos, así que esto debería aplicarse 'Por lo tanto, es posible hacer que los sistemas basados ​​en Unix se comporten como Windows e ignore la distinción entre mayúsculas y minúsculas, pero lo contrario no es cierto, ya que el sistema de archivos subyacente de Windows no puede soportar esto. –

Cuestiones relacionadas