MySql数据库设置表名大小写不敏感(Linux系统)

MySql数据库在Linux系统下默认数据库名与表名严格区分大小写,一般情况下我们创建表名习惯使用全小写,如果遇到某些从Windows服务器迁移过来的数据库可能需要设置大小写不敏感

MySql数据库设置表名大小写不敏感(Linux系统)

所属分类: 数据库
专题标签: MySql 大小写 配置

MySql默认规则

Windows下所有内容大小写不敏感。
Linux下默认大小写规则如下:

  • 数据库名与表名严格区分大小写
  • 表别名严格区分大小写
  • 列名和列别名在所有情况下都是忽略大小写的
  • 变量名也是严格区分大小写的

相关变量

lower_case_file_system:
数据目录所在的文件系统对文件名的大小写敏感

  • ON:大小写不敏感
  • OFF:敏感

lower_case_table_names:
表名与数据库名大小写敏感

  • 0:创建时按大小写字母保存表名和数据库名,比较时对大小写敏感(在大小写本身不敏感的系统中不能将其设置为0,可能导致索引被破坏)
  • 1:创建时按小写字母保存,比较时对大小写不敏感
  • 2:创建时按大小写字母保存表名和数据库名,比较时会转为小写查询(只在对大小写不敏感的文件系统上适用)

Linux修改大小写不敏感

  1. vi /etc/my.cnf
  2. # 添加或修改
  3. lower_case_table_names=1
  4. # 重启MySql
  5. # 使用 service 启动
  6. service mysqld restart
  7. # 使用 mysqld 脚本启动
  8. /etc/inint.d/mysqld restart

其他说明

一般来说在建库配置之初就应当确认好是否需要大小写敏感。
为了避免大小写引发的问题,一种推荐的命名规则是:
在定义数据库、表、列的时候全部采用小写字母加下划线的方式,不使用任何大写字母
因为lower_case_table_names并不是个动态参数,修改需要重启数据库
同时对于库中已有的大些字母表名或库名需要导出重新导入
简而言之,这是个麻烦事儿……