关于MySQL的大小写区分和lower_case_table_names

MySQL的数据库,表,触发器具体对应的是操作系统中的目录和文件,所以这些对象是否区分大小写,受所在操作系统的影响。对于WINDOWS下的MySQL,默认是不区分大小写;对于大部分的UNIX下的MySQL,区分大小写;对于macOS,如果系统采用文件系统是区分大小写的,则区分大小写,否则不区分大小写。

而列名,索引名,存储过程和事件在任何平台下都不区分大小写。

表的别名在UNIX平台下是区分大小写的,即前后要一致;而在WINDOWS和macOS则不区分大小写。

与大小写区分相关的参数是low_case_table_names,在UNIX中默认是0,在WINDOWS中默认是1,在macOS中默认是2,该参数只有在启动时设置才生效。对应三个值的含义:
1.low_case_table_names=0
库名和表名按照创建语句中的大小写原样存储,命名比较区分大小写。如果在不区分大小写的平台中强制设置low_case_table_names=0,当以不同大小写去使用MyISAM表时,可能会造成索引损坏;
2.low_case_table_names=1
库名和表名按照小写存放,命名比较不区分大小写;
3.low_case_table_names=2
库名和表名按照创建语句中的大小写原样存储,但在查找的时候,MySQL会将它们转换成小写,命名比较不区分大小写。

对于Innodb,应该在所有平台都设置low_case_table_names=1。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值