¿Los nombres de las tablas en MySQL distinguen entre mayúsculas y minúsculas?

Resuelto benstpierre asked hace 13 años • 6 respuestas

¿Los nombres de las tablas en MySQL distinguen entre mayúsculas y minúsculas?

En mi máquina de desarrollo de Windows, el código que tengo puede consultar mis tablas que parecen estar todas en minúsculas. Cuando implemento en el servidor de prueba de nuestro centro de datos, los nombres de las tablas parecen comenzar con una letra mayúscula.

Los servidores que utilizamos están todos en Ubuntu.

benstpierre avatar May 26 '11 12:05 benstpierre
Aceptado

En general:

Los nombres de bases de datos y tablas no distinguen entre mayúsculas y minúsculas en Windows y sí lo hacen en la mayoría de las variedades de Unix.

En MySQL, las bases de datos corresponden a directorios dentro del directorio de datos. Cada tabla dentro de una base de datos corresponde al menos a un archivo dentro del directorio de la base de datos. En consecuencia, la distinción entre mayúsculas y minúsculas del sistema operativo subyacente juega un papel en la distinción entre mayúsculas y minúsculas de los nombres de bases de datos y tablas.

Se puede configurar cómo se almacenan los nombres de las tablas en el disco usando la variable del sistema lower_case_table_names(en el archivo de configuración my.cnf en [mysqld]).

Lea la sección: 10.2.2 Sensibilidad entre mayúsculas y minúsculas del identificador para obtener más información.

CloudyMarble avatar May 26 '2011 05:05 CloudyMarble

Los nombres de bases de datos y tablas no distinguen entre mayúsculas y minúsculas en Windows y sí lo hacen en la mayoría de las variedades de Unix o Linux.

Para resolver el problema, establezca lower_case_table_names en 1

nombres_de_tabla_minúsculas=1

Esto hará que todas tus tablas estén en minúsculas, sin importar cómo las escribas.

StephenLembert avatar May 26 '2011 05:05 StephenLembert

Depende de lower_case_table_namesla variable del sistema:

show variables where Variable_name='lower_case_table_names';

Hay tres valores posibles para esto:

  • 0- letra mayúscula especificada en la declaración CREATE TABLEo CREATE DATABASE. Las comparaciones de nombres distinguen entre mayúsculas y minúsculas.
  • 1- Los nombres de las tablas se almacenan en minúsculas en el disco y las comparaciones de nombres no distinguen entre mayúsculas y minúsculas.
  • 2- letras especificadas en la declaración CREATE TABLEo CREATE DATABASE, pero MySQL las convierte a minúsculas en la búsqueda. Las comparaciones de nombres no distinguen entre mayúsculas y minúsculas.

Documentación

Raman Sahasi avatar Jun 26 '2017 04:06 Raman Sahasi

Los nombres de las tablas en MySQL son entradas del sistema de archivos, por lo que no distinguen entre mayúsculas y minúsculas si el sistema de archivos subyacente lo es.

Oswald avatar May 26 '2011 05:05 Oswald
  1. Localice el archivo en/etc/mysql/my.cnf

  2. Edite el archivo agregando las siguientes líneas:

     [mysqld]
    
     lower_case_table_names=1
    
  3. sudo /etc/init.d/mysql restart

  4. Corre mysqladmin -u root -p variables | grep tablepara comprobar que lower_case_table_nameses 1ahora .

Es posible que necesites recrear estas tablas para que funcione.

sendon1982 avatar Jan 20 '2018 10:01 sendon1982