mysql运维中lower

61次阅读
没有评论

共计 1630 个字符,预计需要花费 5 分钟才能阅读完成。

这篇文章主要介绍了 mysql 运维中 lower_case_table_names 是什么意思,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让丸趣 TV 小编带着大家一起了解一下。

1 简介
    在 MySQL 中,数据库对应数据目录中的目录。数据库中的每个表至少对应数据库目录中的一个文件 (也可能是多个,取决于存储引擎)。因此,所使用操作系统的大小写敏感性决定了数据库名和表名的大小写敏感性。
    在大多数 Unix 中数据库名和表名对大小写敏感,而在 Windows 中对大小写不敏感。一个显著的例外情况是 Mac OS X,它基于 Unix 但使用默认文件系统类型 (HFS+),对大小写不敏感。然而,Mac OS X 也支持 UFS 卷,该卷对大小写敏感,就像 Unix 一样。
    变量 lower_case_file_system 说明是否数据目录所在的文件系统对文件名的大小写敏感。ON 说明对文件名的大小写不敏感,OFF 表示敏感。

例如在 windows 下查看:

说明 windows 系统对大小写不敏感,mysql 也默认设置为对大小写不敏感。

2 大小写区分规则
   linux 下:
    数据库名与表名是严格区分大小写的;
    表的别名是严格区分大小写的;
    列名与列的别名在所有的情况下均是忽略大小写的;
    变量名也是严格区分大小写的;
   windows 下:
    都不区分大小写
   Mac OS 下(非 UFS 卷):
    都不区分大小写

3 参数说明(lower_case_table_names)
   unix 下 lower_case_table_names 默认值为 0 .Windows 下默认值是 1 .Mac OS X 下默认值是 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 表名用小写保存。

4 由大小写敏感转换为不敏感方法
    如果原来所建立库及表都是对大小写敏感的,想要转换为对大小写不敏感,主要需要进行如下 3 步:
   1. 将数据库数据通过 mysqldump 导出。
   2. 在 my.cnf 中更改 lower_case_tables_name = 1,并重启 mysql 数据库。
   3. 将导出的数据导入 mysql 数据库。

5 注意事项
    为了避免大小写引发的问题,一种推荐的命名规则是:在定义数据库、表、列的时候全部采用小写字母加下划线的方式,不使用任何大写字母
    在任何系统中可以使用 lower_case_tables_name=1。使用该选项的不利之处是当使用 SHOW TABLES 或 SHOW DATABASES 时,看不出名字原来是用大写还是小写。
    请注意在 Unix 中如果以前 lower_case_tables_name = 0 将 lower_case_tables_name 设置为 1 之前,重启 mysqld 之前,必须先将旧的数据库名和表名转换为小写。

感谢你能够认真阅读完这篇文章,希望丸趣 TV 小编分享的“mysql 运维中 lower_case_table_names 是什么意思”这篇文章对大家有帮助,同时也希望大家多多支持丸趣 TV,关注丸趣 TV 行业资讯频道,更多相关知识等着你来学习!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-28发表,共计1630字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)