Les noms de table dans MySQL sont-ils sensibles à la casse?
Sont les noms de table dans MySQL sensible à la casse?
sur ma machine dev Windows le code que j'ai est capable d'interroger mes tables qui semblent être toutes en minuscules. Lorsque je me déploie sur le serveur de test de notre datacenter, les noms de table apparaissent en majuscules.
les serveurs que nous utilisons sont tous sur Ubuntu.
5 réponses
En Général:
les noms de bases de données et de tables ne sont pas sensibles à la casse sous Windows, et sensibles à la casse sous la plupart des variantes D'Unix.
dans MySQL, les bases de données correspondent aux répertoires dans les données répertoire. Chaque tableau d'une base de données correspond à au moins un fichier dans le répertoire de base de données. Par conséquent, le cas de la sensibilité de la - système d'exploitation joue un rôle dans le cas la sensibilité de noms de bases de données et de tables.
on peut configurer comment les noms de tables sont stockés sur le disque en utilisant la variable système lower_case_table_names
. (dans mon.cnf configuration sous [mysqld])
Lire la section: 10.2.2 sensibilité de L'identificateur pour plus de renseignements.
les noms de bases de données et de tables ne sont pas sensibles à la casse sous Windows, et sensibles à la casse sous la plupart des variantes D'Unix ou Linux.
pour résoudre le problème, définissez la valeur de lower_case_table_names à 1
lower_case_table_names=1
cela fera toutes vos tables en minuscules, peu importe comment vous les écrivez
les noms de Table dans MySQL sont des entrées de système de fichiers, donc ils sont insensibles à la casse si le système de fichiers sous-jacent est.
Cela dépend lower_case_table_names
variable système:
show variables where Variable_name='lower_case_table_names'
il y a trois valeurs possibles pour cela:
-
0
- cas de lettre spécifié dans la déclarationCREATE TABLE
ouCREATE DATABASE
. Comparaisons nom sont sensibles à la casse. -
1
- les noms de Table sont stockés dans les comparaisons de minuscules sur le disque et de noms ne sont pas sensibles à la casse. -
2
- lettercase spécifié dans la déclarationCREATE TABLE
ouCREATE DATABASE
, mais MySQL les convertit en minuscules sur la recherche. Nom comparaisons ne sont pas sensibles à la casse.
-
localisez le fichier
/etc/mysql/my.cnf
-
modifier le fichier en ajoutant les lignes suivantes:
[mysqld]
lower_case_table_names=1
-
sudo /etc/init.d/mysql restart
-
exécuter
mysqladmin -u root -p variables | grep table
pour vérifier quelower_case_table_names
est1
maintenant
vous pourriez avoir besoin de recréer ces tables pour le faire fonctionner