您的位置:首页 > 数据库 > > 正文

mysql忽略大小写(MySQL大小写敏感的注意事项)

更多 时间:2021-10-03 01:59:04 类别:数据库 浏览量:699

mysql忽略大小写

MySQL大小写敏感的注意事项

由于这个原因,在阿里巴巴规约中这样要求:

【强制】表名、字段名必须使用小写字母或数字 , 禁止出现数字开头,禁止两个下划线中间只 出现数字。数据库字段名的修改代价很大,因为无法进行预发布,所以字段名称需要慎重考虑。

因此,数据库名、 表名、字段名,都不允许出现任何大写字母,避免引起不必要的麻烦。

mysql的大小写敏感是由参数控制的

mysql大小写敏感配置相关的两个参数,lower_case_file_system 和 lower_case_table_names。

查看当前mysql的大小写敏感配置,可以使用如下语句

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • show global variables like '%lower_case%';
  •  
  • +------------------------+-------+
  • | variable_name          | value |
  • +------------------------+-------+
  • | lower_case_file_system | on    |
  • | lower_case_table_names | 0     |
  • +------------------------+-------+
  • 参数说明如下:

    1.lower_case_file_system,代表当前系统文件是否大小写敏感,只读参数,无法修改。on 大小写不敏感,off 大小写敏感。

    • 此变量描述数据所在的操作系统的文件目录是否区分大小写。 off表示文件名区分大小写,on表示它们不区分大小写。此变量是只读的,因为它反映了文件系统的属性,设置它对文件系统没有影响。

    2.lower_case_table_names,代表表名是否大小写敏感,可以修改,参数有0、1、2三种。

    • 0 大小写敏感。(unix,linux默认) 创建的库表将原样保存在磁盘上。如create database test;将会创建一个test的目录,create table abccc …将会原样生成abccc.frm文件,sql语句也会原样解析。
    • 1 大小写不敏感。(windows默认) 创建的库表时,mysql将所有的库表名转换成小写存储在磁盘上。 sql语句同样会将库表名转换成小写。 如需要查询以前创建的testtable(生成testtable.frm文件),即便执行select * from testtable,也会被转换成select * from testtable,致使报错表不存在。
    • 2 大小写不敏感(os x默认) 创建的库表将原样保存在磁盘上, 但sql语句将库表名转换成小写。

    mysql大小写敏感如何设置

    在linux系统中修改my.cnf文件,在windows下修改my.ini文件,新增或修改以下内容。

  • ?
  • 1
  • lower_case_table_names = 0 或 lower_case_table_names = 1
  • 然后重启mysql服务才可以生效。

    开发注意事项

    • 如果要将lower_case_table_names从0(敏感)修改为1(不敏感)时,必须先对旧数据表的表名进行处理,把所有数据库的表名先改为小写,最后再设置lower_case_table_names为1,否则依然会出现无法找到表名的问题。
    • 在windows上lower_case_table_names默认值为1(不敏感),在macos上默认值为2(不敏感)。在linux上不支持值2,服务器强制该值为0(敏感)。
    • 并且mysql官方也提示说:如果在数据目录驻留在不区分大小写的文件系统(例如windows或macos)上,则不应将lower_case_table_names设置为0。
    • 否则将出现mysql服务无法启动的问题。

    总结

    由于操作系统不同导致大小写敏感的默认设置不一致,我们在开发时一定要注意,应该养成严格的意识,sql语句一律采用小写字母,避免无意义的踩坑。

    以上就是mysql大小写敏感的注意事项的详细内容,更多关于mysql大小写敏感的资料请关注开心学习网其它相关文章!

    您可能感兴趣