Les noms de table dans MySQL sont-ils sensibles à la casse?
Sur ma machine de développement Windows, le code que j'ai est capable d'interroger mes tables qui semblent être toutes en minuscules. Lorsque je déploie sur le serveur de test de notre centre de données, les noms de table semblent commencer par une lettre majuscule.
Les serveurs que nous utilisons sont tous sur Ubuntu.
mysql
case-sensitive
mysql5
Benstpierre
la source
la source
Réponses:
En général:
Les noms de base de données et de table ne sont pas sensibles à la casse sous Windows et à la casse dans la plupart des variétés d'Unix.
On peut configurer la façon dont les noms de tables sont stockés sur le disque en utilisant la variable système
lower_case_table_names
(dans le fichier de configuration my.cnf sous [mysqld]).Lisez la section: 10.2.2 Sensibilité à la casse des identificateurs pour plus d'informations.
la source
Les noms de base de données et de table ne sont pas sensibles à la casse sous Windows et à la casse dans la plupart des variétés d'Unix ou Linux.
pour résoudre le problème, définissez le paramètre lower_case_table_names sur 1
cela rendra tous vos tableaux en minuscules, peu importe comment vous les écrivez
la source
Les noms de table dans MySQL sont des entrées de système de fichiers, ils ne sont donc pas sensibles à la casse si le système de fichiers sous-jacent l'est.
la source
Cela dépend de la
lower_case_table_names
variable système:Il existe trois valeurs possibles pour cela:
0
- la casse à lettres spécifiée dans l' instructionCREATE TABLE
ouCREATE DATABASE
. Les comparaisons de noms sont sensibles à la casse.1
- Les noms de table sont stockés en minuscules sur le disque et les comparaisons de noms ne sont pas sensibles à la casse.2
- la casse spécifiée dans l' instructionCREATE TABLE
ouCREATE DATABASE
, mais MySQL les convertit en minuscules lors de la recherche. Les comparaisons de noms ne sont pas sensibles à la casse.Documentation
la source
Localisez le fichier sur
/etc/mysql/my.cnf
Modifiez le fichier en ajoutant les lignes suivantes:
[mysqld]
lower_case_table_names=1
sudo /etc/init.d/mysql restart
courir
mysqladmin -u root -p variables | grep table
pour vérifier quelower_case_table_names
c'est1
maintenantVous devrez peut-être recréer ces tables pour que cela fonctionne
la source