• mysql踩坑(一)-大小写规则


    mysql大小写

    在实际的项目中,大家或多或少都会遇到过mysql数据库大小写的问题。下面,博主将简单的介绍一下mysql数据库的大小写问题。

    sql关键字和函数名

    在mysql数据库中,sql关键字和大小写 是不区分大小写的。下面语句的俩种写法,mysql都能够正常的执行。

    /*全小写*/
    select now();
    
    /*全大写*/
    SELECT NOW():
    

    数据库名和表名

    博主在一次数据库的迁移时,就碰到了数据库表名大小写的问题。在windows服务器上运行好好的应用,在mysql数据库迁移到linux服务器上后,就出现了表不存在的异常。后面经过排查得知,mysql数据库名和表名与操作系统是否区分大小写有关系

    windows系统

    在windows系统下,mysql数据库不区分大小写。也就是说你的select语句中的表名是全大写的,而实际数据库的表名是全小写的,也能够查询到数据。

    查询大写的名称ROLE表,能够查询到表数据。

    Windows查询role表

    查询小写的名称ROLE表,能够查询到表数据。

    Windows查询ROLE表

    linux系统

    在linux系统下,mysql数据库区分大小写。如下图所示,查询大写的名称ROLE表,datagrip返回了 表不存在的错误提示。

    Linux查询ROLE表

    而使用全小写的名称role,则能够查询到表数据。

    Linux查询role表

    博主这里使用是docker运行的mysql镜像,配置文件的路径为/etc/mysql/mysql.conf.d/mysqld.cnf,添加如下所示的配置,使的mysql不区分大小写。

    low_case_table_names=1
    

    配置完后,重启mysql服务,这时候再次查看执行结果。

    查看执行结果

    列名和索引名

    在mysql数据库中,不区分列名和索引名的大小写。如下图所示,使用大写和小写的id字段都能够查询到数据。

    不区分列名查询

    如下图所示,使用大写和小写的索引名称都能够正常的查询数据。

    enter description here

    博主微信公众号

  • 相关阅读:
    一顿午饭引发的风波
    用exp无法导出空表解决方法/用exp导出数据时表丢失原因
    程序员的不归路
    IIS权限设置
    超级基础搭建Android开发环境
    业务流程图与数据流程图的比较
    发布asp.net应用程序后,其中导入、导出excel报错的解决方案
    Validation of viewstate MAC failed异常的原因及解决方法
    orarcle11g中服务代表的意思
    最新BIOS设置中英文对照表
  • 原文地址:https://www.cnblogs.com/chenhaoblog/p/13604727.html
Copyright © 2020-2023  润新知