Deux paramètres liés à la configuration mysql sensible à la casse, lower_case_file_system et lower_case_table_names .
Afficher la configuration actuelle sensible à la casse de MySQL
show global variables like '%lower_case%';+------------------------+-------+| Variable_name | Value | +------------------------+-------+| lower_case_file_system | ON | | lower_case_table_names | 0 |+------------------------+-------+
indique si le fichier système actuel est sensible à la casse. Il s'agit d'un paramètre en lecture seule et ne peut pas être modifié.
ON Insensible à la casse
OFF Sensible à la casse
lower_case_table_names
Indique si le nom de la table est sensible à la casse et peut être modifié.
Lorsque lower_case_table_names = 0, mysql fonctionnera directement en fonction du nom de la table et est sensible à la casse.
Lorsque lower_case_table_names = 1, mysql convertira d'abord le nom de la table en minuscules avant d'effectuer l'opération.
Définissez la valeur de lower_case_table_names
Ouvrez le fichier my.cnf, ajoutez les instructions suivantes et redémarrez.
lower_case_table_names = 0 或 lower_case_table_names = 1
Créer un utilisateur de table
CREATE TABLE `user` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Le nom de la table est dans la même casse que lors de sa création
select count(*) from user; +----------+| count(*) | +----------+| 0 | +----------+
Le nom de la table est pas dans le même cas qu'à sa création
select count(*) from User;ERROR 1146 (42S02): Table 'user.User' doesn't exist
Lorsque lower_case_table_names=0, les noms de tables sont sensibles à la casse.
Le nom de la table doit être dans la même casse que lors de sa création
select count(*) from user; +----------+| count(*) | +----------+| 0 | +----------+
Le nom de la table n'est pas cohérent avec la casse lors de sa création
select count(*) from User; +----------+| count(*) | +----------+| 0 | +----------+
Lorsque lower_case_table_names=1, le nom de la table n'est pas sensible à la casse.
lower_case_table_names=1, la table créée d'origine sera invitée à ne pas exister lorsqu'elle est utilisée.
DémoCréer un utilisateur de table (cas mixte)
Ensuite, définissez
lower_case_table_names=1CREATE TABLE `User` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;show tables; +----------------+| Tables_in_user | +----------------+| User | +----------------+
Lors de l'exécution de la requête, que le nom de la table soit en majuscule ou en minuscule, il sera demandé que la table n'existe pas
select * from User;ERROR 1146 (42S02): Table 'user.user' doesn't existselect * from user;ERROR 1146 (42S02): Table 'user.user' doesn't existselect * from USER;ERROR 1146 (42S02): Table 'user.user' doesn't exist
Solution :
Différents systèmes d'exploitation entraînent une sensibilité à la casse incohérente. Lorsque nous développons, nous devons développer selon le principe de sensibilité à la casse, afin que le programme développé puisse être compatible avec différents systèmes d'exploitation. Par conséquent, il est recommandé de définir la valeur de lower_case_table_names sur 0 dans l'environnement de développement et de test, afin de contrôler strictement la sensibilité à la casse du code pendant le développement et d'améliorer la compatibilité et la rigueur du code. Cet article explique le problème de configuration sensible à la casse de MySQL Pour plus de contenu connexe, veuillez prêter attention au site Web PHP chinois.
Comment utiliser php pour fusionner des tableaux et conserver les valeurs clés
Comment utiliser phpcurl pour implémenter classe de fichiers de téléchargement multi-processus
Comment déterminer si des fichiers locaux et distants existent via php
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!