mysql为什么推荐以小写字母加下划线作表命名

mysql为什么推荐以小写字母加下划线作表命名

场景介绍

 最近,有位开发同事在mac下作开发,在建表时总是报错数据库表已存在,但在数据库show tables 发现并没有这张表。
 在这里和大家分享下经历,难免会有些许错误,请各位看官不吝赐教。

原由分析

 根本原因是在mac os 下mysql是默认大小写不敏感的。而启决定作用的就是lower_case_table_names参数。

oslinuxmacwindows
大小写默认参数值021
表名大小写敏感不敏感不敏感
字段名大小写不敏感不敏感不敏感
其余变量名大小写敏感不敏感不敏感

 之所以会有差异,是因为这些不同操作系统使用的文件系统不一致导致的。数据库始终还是基于磁盘文件之上做的管理,附录有详细介绍。

解决方式

 点个题,其实这就是为什么mysql推荐以小写字母加下划线作表命名的原因。为了不同系统之间的兼容性,为了避免发生大小写引发的问题,推荐不使用任何大写字母。

附录lower_case_table_names参数值说明

参数值官方说明
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表名用小写保存。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值