web-dev-qa-db-fra.com

Les noms de colonne et de table sont-ils sensibles à la casse dans MySQL?

Si j'ai un nom de colonne appelé category_id et Category_Id, sont-ils différents?

Et si j'ai une table appelée category et Category, sont-ils différents?

64
shin

Sous Unix, les noms de table sont sensibles à la casse. Sous Windows, ce n'est pas le cas. Amusant, non? Un peu comme leurs systèmes de fichiers respectifs. Pensez-vous que c'est une coïncidence?

En d'autres termes, si vous prévoyez de déployer sur une machine Linux, mieux tester votre SQL contre un MySQL basé sur Linux, ou être prêt à de mystérieuses erreurs "table introuvable" au moment de la production. Les VM sont bon marché de nos jours.

Les noms de champ ne respectent pas la casse.

EDIT: nous parlons du système d'exploitation sur la machine MySQL serveur, pas client.

74
Seva Alekseyev

Depuis MySQL documentation :

les noms de base de données et de table ne sont pas sensibles à la casse dans Windows et sensibles à la casse dans la plupart des variétés d'Unix. Une exception notable est Mac OS X, qui est basé sur Unix mais utilise un type de système de fichiers par défaut (HFS +) qui ne respecte pas la casse.

et

Les noms de colonnes et d'index ne sont sensibles à la casse sur aucune plateforme, pas plus que les alias de colonnes.

19
Anitha.y

Pour les noms de base de données et de table, cela dépend du système d'exploitation sous-jacent. Voir 8.2.2. Sensibilité à la casse de l'identifiant

5
Pekka 웃

Vous pourriez trouver this nécessaire à lire. Il est possible de définir la sensibilité à la casse dans MySQL mais ce n'est vraiment un problème que lorsque vous travaillez dans plusieurs environnements.

3
Vincent Ramdhanie

Curieusement, il semble pour être sensible à la casse dans MySQL Workbench même sur Windows.

Nous avons juste essayé de modifier les résultats d'une instruction SELECT, mais le Workbench ne nous a pas laissé faire, se plaignant que notre requête n'incluait pas la clé primaire de la table (ce qu'elle a fait mais en minuscules), le résultat était donc en lecture seule. L'exécution de la même requête avec la clé primaire dans le cas approprié (ID au lieu d'ID) nous permettrait de modifier les résultats comme prévu.

1
Thomas Touzimsky