18 votos

MySQL Minúsculas en los Nombres de Tabla en Windows nombres en Mayúsculas en Unix

Tengo un problema por que mi servidor de producción se ejecuta en Unix y mi dev server se ejecuta en MS Windows. El problema es que Windows no es sensible a mayúsculas y Unix. Así que mi juego de mesa en el servidor de producción utiliza Mayúsculas en los nombres de tabla, es decir "Clientes", y en las Ventanas de la tabla de nombres en minúsculas "clientes".

Todo esto está muy bien hasta que usted necesita para obtener los datos de un cuadro a otro y su SQL exportación dice insert into "clientes" en minúsculas, y presto "Desconocido tabla de clientes". Debido a que el servidor de producción se encuentra actualmente en un plan de hosting compartido que yo no puedo cambiar la configuración e instalar la clave que ignora caso.

Así que mi pregunta es, hay alguna forma de obtener Windows para convertir las tablas de vuelta para el caso correcto o hay alguna opción de configuración que puedo incluir en la exportación de SQL archivo para que yo pueda cargar datos sin este problema.

Gracias

ACTUALIZACIÓN

Aquí es lo que he descubierto por alguien más tiene este problema.

Si ya has configurado tus tablas de MySQL en Windows agregar lower_case_table_names=2 a mi.cnf o my.archivo ini no cambiará el caso de las tablas automáticamente, incluso si originalmente fueron creados utilizando mayúsculas o minúsculas mezcladas nombres.

CREAR TABLA "MyTable" va a crear una nueva tabla "mytable" no "MyTable" incluso cuando lower_case_table_names=2 se establece en el mi.cnf archivo.

Para evitar este problema, utilice este método

  1. Hacer una copia de la tabla original
  2. Caída de la tabla original
  3. Cambiar el nombre de la copia de la tabla de la correcta utilización de la caja.

Esta es la única manera de que funcione. Espero que esto ayude a alguien.

16voto

codemonkey Puntos 1756

Tomado de dev.mysql.com:

Para evitar la transferencia de datos de los problemas derivados de lettercase de base de datos o tabla de nombres, usted tiene dos opciones:

  • Uso lower_case_table_names=1 en todos los sistemas. La principal desventaja de esto es que cuando se utiliza MOSTRAR TABLAS o MOSTRAR BASES de datos, no ver los nombres originales de lettercase.
  • Uso lower_case_table_names=0 en Unix y lower_case_table_names=2 en Windows. Esto preserva la lettercase de base de datos y los nombres de tabla. La desventaja de esto es que usted debe asegurarse de que sus estados financieros se refieren siempre a su base de datos los nombres de tabla y con la correcta lettercase en Windows. Si la transferencia de sus declaraciones a Unix, donde lettercase es significativo, no funcionan si el lettercase es incorrecta.

Excepción: Si usted está usando tablas InnoDB y que está tratando de evitar estos de transferencia de datos de problemas, usted debe establecer lower_case_table_names a 1 en todas las plataformas de la fuerza de nombres que se convierten a minúsculas.

Si usted va a establecer la lower_case_table_names variable del sistema a 1 en Unix, primero debe convertir su base de datos y tabla de nombres en minúsculas antes de detenerse mysqld y reiniciar con la nueva variable de ajuste.

0voto

chaos Puntos 69029

El universal rectores de la filosofía de Windows con respecto a la del caso es "case-insensitive, caso almacenados". Eso significa que Windows nunca tiene la intención de descartar su caso, así que es un poco un misterio por qué las tablas en las Ventanas son de menor caso.

Disculpas si esto es una pregunta tonta, pero has probado a cambiar el nombre de las tablas en la máquina de Windows, para que tengan la correcta patrón caso?

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X