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.

131
demandé sur zx8754 2011-05-26 09:17:18

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.

151
répondu CloudyMarble 2017-10-24 06:18:32

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

87
répondu StephenLembert 2011-05-26 05:51:02

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.

17
répondu Oswald 2015-08-01 04:53:52

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éclaration CREATE TABLE ou CREATE 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éclaration CREATE TABLE ou CREATE DATABASE , mais MySQL les convertit en minuscules sur la recherche. Nom comparaisons ne sont pas sensibles à la casse.

Documentation

9
répondu Raman Sahasi 2017-06-26 04:24:49
  1. localisez le fichier /etc/mysql/my.cnf

  2. modifier le fichier en ajoutant les lignes suivantes:

    [mysqld]

    lower_case_table_names=1

  3. sudo /etc/init.d/mysql restart

  4. exécuter mysqladmin -u root -p variables | grep table pour vérifier que lower_case_table_names est 1 maintenant

vous pourriez avoir besoin de recréer ces tables pour le faire fonctionner

2
répondu sendon1982 2018-01-20 10:25:24