sensibilidad - mysql mayuscula primera letra
Nombres de tablas en minúsculas de MySQL en nombres en mayúsculas de Windows en Unix (3)
Tengo un problema por el cual mi servidor de producción ejecuta Unix y mi servidor dev ejecuta MS Windows. El problema es que Windows no distingue entre mayúsculas y minúsculas y Unix lo es. Así que mi tabla configurada en el servidor de producción usa nombres de tabla en mayúsculas, es decir, "Clientes" y en Windows los nombres de las tablas están en "clientes" en minúsculas.
Todo esto está bien hasta que necesite obtener datos de una casilla a otra y su exportación de SQL diga insertar en "clientes" en minúsculas, y presto "clientes de la tabla Desconocida". Debido a que el servidor de producción está actualmente en un plan de alojamiento compartido, no puedo cambiar la configuración e instalar la clave que ignora el caso.
Entonces, mi pregunta, ¿hay una manera de hacer que Windows convierta las tablas al caso correcto o hay alguna configuración que pueda incluir en el archivo SQL de exportación para poder cargar datos sin este problema?
Gracias
ACTUALIZAR
Aquí está lo que descubrí para cualquier otra persona que tiene este problema.
Si ya ha configurado sus tablas que ejecutan MySQL en Windows, la adición de lower_case_table_names = 2 a su archivo my.cnf o my.ini no cambiará el caso de sus tablas automáticamente, incluso si se crearon originalmente usando mayúsculas o nombres de casos mixtos.
CREAR TABLA "MyTable" creará una nueva tabla "mytable" no "MyTable" incluso cuando lower_case_table_names = 2 esté configurado en su archivo my.cnf.
Para solucionar este problema utiliza este método.
- Haga una copia de su tabla original
- Deja tu mesa original
- Renombra tu tabla de copias usando el caso correcto.
Esta es la única manera en que funcionará. Espero que esto ayude a alguien.
Hay una solución fácil:
Siempre el nombre de sus nombres en minúscula.
La filosofía de guía universal de Windows con respecto al caso es "no se distingue entre mayúsculas y minúsculas, el caso se almacena ". Eso significa que Windows nunca pretende descartar su caso, por lo que es un poco misterioso por qué sus tablas en Windows son minúsculas.
Discúlpese si esta es una pregunta tonta, pero ¿ha intentado cambiar el nombre de las tablas en la máquina Windows para que tengan el patrón de caso correcto?
Tomado de dev.mysql.com/doc/refman/5.0/en/… :
Para evitar los problemas de transferencia de datos que surgen de la letra mayúscula de la base de datos o los nombres de tablas, tiene dos opciones:
- Use lower_case_table_names = 1 en todos los sistemas. La principal desventaja de esto es que cuando usa MOSTRAR MESA o MOSTRAR BASES DE DATOS, no ve los nombres en su letra original.
- Use lower_case_table_names = 0 en Unix y lower_case_table_names = 2 en Windows. Esto preserva la letra de la base de datos y los nombres de tablas. La desventaja de esto es que debe asegurarse de que sus declaraciones se refieran siempre a los nombres de su base de datos y de la tabla con la letra correcta en Windows. Si transfiere sus declaraciones a Unix, donde el caso de letras es significativo, no funcionarán si el formato de letra es incorrecto.
Excepción: si está utilizando tablas InnoDB y está intentando evitar estos problemas de transferencia de datos, debe establecer lower_case_table_names en 1 en todas las plataformas para forzar que los nombres se conviertan en minúsculas.
Si planea establecer la variable del sistema lower_case_table_names en 1 en Unix, primero debe convertir la base de datos antigua y los nombres de las tablas en minúsculas antes de detener mysqld y reiniciarlo con la nueva configuración de variable.