Maison  >  Article  >  base de données  >  mysql-lower_case_table_names

mysql-lower_case_table_names

韦小宝
韦小宝original
2018-02-08 09:54:491402parcourir

1 Introduction
Dans MySQL, la base de données correspond au répertoire dans le répertoire de données. Chaque table de la base de données correspond à au moins un fichier du répertoire de la base de données (peut-être plusieurs, selon le moteur de stockage). Par conséquent, la sensibilité à la casse du système d'exploitation utilisé détermine la sensibilité à la casse des noms de bases de données et de tables.
Les noms de bases de données et les noms de tables sont sensibles à la casse dans la plupart des Unix, mais pas à la casse sous Windows. Une exception notable est Mac OS X, qui est basé sur Unix mais utilise le type de système de fichiers par défaut (HFS+), qui ne respecte pas la casse. Cependant, Mac OS X prend également en charge les volumes UFS, qui sont sensibles à la casse, tout comme Unix.
La variable lower_case_file_system indique si le système de fichiers où se trouve le répertoire de données est sensible à la casse du nom de fichier. ON indique que le nom du fichier n'est pas sensible à la casse, OFF indique qu'il est sensible à la casse.

Par exemple, affichez-le sous Windows :

mysql-lower_case_table_names

Cela signifie que le système Windows n'est pas sensible à la casse, et MySQL est également défini pour ne pas être sensible à la casse par défaut.

2 Règles de sensibilité à la casse
Sous Linux :
Les noms de bases de données et les noms de tables sont strictement sensibles à la casse
L'alias de table est strictement sensible à la casse ; -sensible ;
Les noms de colonnes et les alias de colonnes sont insensibles à la casse dans tous les cas ;
Les noms de variables sont également strictement sensibles à la casse
Sous Windows :
Les deux ne sont pas sensibles à la casse
Sous Mac OS ; (volume non UFS) :
Non sensible à la casse

3 Description du paramètre (lower_case_table_names)
La valeur par défaut de lower_case_table_names sous Unix est 0. La valeur par défaut sous Windows est 1. La valeur par défaut sous Mac OS X est 2.

                 参数值                 

解释
0 使用CREATE TABLE或CREATE DATABASE语句指定的大小写字母在硬盘上保存表名和数据库名。名称比较对大小写敏感。在大小写不敏感的操作系统如windows或Mac OS x上我们不能将该参数设为0,如果在大小写不敏感的文件系统上将--lowercase-table-names强制设为0,并且使用不同的大小写访问MyISAM表名,可能会导致索引破坏。
1 表名在硬盘上以小写保存,名称比较对大小写不敏感。MySQL将所有表名转换为小写在存储和查找表上。该行为也适合数据库名和表的别名。该值为Windows的默认值。
2 表名和数据库名在硬盘上使用CREATE TABLE或CREATE DATABASE语句指定的大小写字母进行保存,但MySQL将它们转换为小写在查找表上。名称比较对大小写不敏感,即按照大小写来保存,按照小写来比较。注释:只在对大小写不敏感的文件系统上适用! innodb表名用小写保存。
Valeur du paramètre td>Enregistrez le nom de la table et le nom de la base de données sur le disque dur en utilisant les lettres majuscules et minuscules spécifiées dans l'instruction CREATE TABLE ou CREATE DATABASE. Les comparaisons de noms sont sensibles à la casse. Nous ne pouvons pas définir ce paramètre sur 0 sur les systèmes d'exploitation insensibles à la casse tels que Windows ou Mac OS. L'accès aux noms de table MyISAM en majuscules et minuscules peut entraîner une corruption de l'index.
1 Les noms de tables sont enregistrés en minuscules sur le disque dur et les comparaisons de noms ne sont pas sensibles à la casse. MySQL convertit tous les noms de tables en minuscules sur les tables de stockage et de recherche. Ce comportement s'applique également aux noms de bases de données et aux alias de tables. Cette valeur est la valeur par défaut de Windows.
2 Les noms de tables et de bases de données sont enregistrés sur le disque dur en utilisant les lettres majuscules et minuscules spécifiées dans l'instruction CREATE TABLE ou CREATE DATABASE, mais MySQL les convertit en minuscules sur la table de recherche. La comparaison des noms n'est pas sensible à la casse, c'est-à-dire qu'elle est enregistrée en majuscules et en minuscules et comparée en minuscules. Remarque : applicable uniquement sur les systèmes de fichiers insensibles à la casse ! Les noms de tables InnoDB sont enregistrés en minuscules.

4 Conversion d'une méthode sensible à la casse en une méthode insensible
Si la bibliothèque d'origine créée est Tables sont tous sensibles à la casse. Si vous souhaitez les convertir en insensibles à la casse, vous devez principalement effectuer les trois étapes suivantes :
1. Exportez les données de la base de données via mysqldump.
2. Modifiez lower_case_tables_name = 1 dans my.cnf et redémarrez la base de données mysql.
3. Importez les données exportées dans la base de données mysql.

5 Notes
Afin d'éviter les problèmes causés par la casse, une règle de dénomination recommandée est la suivante : lors de la définition des bases de données, des tables, des colonnes lors de l'utilisation toutes les lettres minuscules et soulignées, n'utilisez aucune lettre majuscule
Vous pouvez utiliser lower_case_tables_name=1 dans n'importe quel système. L'inconvénient de l'utilisation de cette option est que lors de l'utilisation de SHOW TABLES ou SHOW DATABASES, il n'est pas possible de voir si le nom était à l'origine en majuscule ou en minuscule.
Veuillez noter que sous Unix, si lower_case_tables_name = 0 avant de définir lower_case_tables_name sur 1, l'ancien nom de la base de données et le nom de la table doivent être convertis en minuscules avant de redémarrer mysqld.

Recommandations associées :

Ajoutez lower_case_table_names = 0 à my.ini dans Mysql pour créer le _MySQL

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn