¿Los nombres de las tablas en MySQL distinguen entre mayúsculas y minúsculas?
¿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.
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.
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.
Depende de lower_case_table_names
la 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ónCREATE TABLE
oCREATE 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ónCREATE TABLE
oCREATE 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
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.
Localice el archivo en
/etc/mysql/my.cnf
Edite el archivo agregando las siguientes líneas:
[mysqld] lower_case_table_names=1
sudo /etc/init.d/mysql restart
Corre
mysqladmin -u root -p variables | grep table
para comprobar quelower_case_table_names
es1
ahora .
Es posible que necesites recrear estas tablas para que funcione.