Les noms de table sont-ils sensibles à MySQL?

Les noms de table sont-ils sensibles à MySQL?

Sur ma machine Windows dev, le code que je possède est capable d’interroger mes tables qui semblent être toutes en minuscules. Lorsque je déploie sur le serveur de test dans notre centre de données, les noms des tables semblent commencer par une lettre majuscule.

Les serveurs que nous utilisons sont tous sur Ubuntu.

En général:

Les noms de bases de données et de tables ne sont pas sensibles à la casse sous Windows et sont sensibles à la casse dans la plupart des variétés d’Unix.

Dans MySQL, les bases de données correspondent aux répertoires du répertoire de données. Chaque table d’une firebase database correspond à au moins un fichier du répertoire de la firebase database. Par conséquent, la sensibilité à la casse du système d’exploitation sous-jacent joue un rôle dans la sensibilité à la casse des noms de firebase database et de table.

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 la configuration my.cnf sous [mysqld])

Lisez la section: 10.2.2 Sensibilité à la casse de l’identificateur pour plus d’informations.

Les noms de bases de données et de tables ne sont pas sensibles à la casse sous Windows et sont sensibles à la casse dans la plupart des variétés d’Unix ou de Linux.

pour résoudre le problème, définissez le paramètre lower_case_table_names sur 1

lower_case_table_names = 1

cela rendra toutes vos tables minuscules, peu importe comment vous les écrivez

Les noms de tables dans MySQL sont des entrées de système de fichiers, elles sont donc insensibles à la casse si le système de fichiers sous-jacent est.

Cela dépend de la variable système lower_case_table_names :

 show variables where Variable_name='lower_case_table_names' 

Il y a trois valeurs possibles pour cela:

  • 0 – lettercase spécifié dans l’instruction CREATE TABLE ou CREATE DATABASE . Les comparaisons de noms sont sensibles à la casse.
  • 1 – Les noms de tables sont stockés en minuscules sur le disque et les comparaisons de noms ne sont pas sensibles à la casse.
  • 2 – lettercase spécifié dans l’instruction CREATE TABLE ou CREATE DATABASE , mais MySQL les convertit en minuscule lors de la recherche. Les comparaisons de noms ne sont pas sensibles à la casse.

Documentation

  1. Localisez le fichier dans /etc/mysql/my.cnf

  2. Modifiez le fichier en ajoutant les lignes suivantes:

    [mysqld]

    lower_case_table_names=1

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

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

Vous devrez peut-être recréer ces tables pour que cela fonctionne