zoukankan      html  css  js  c++  java
  • 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

    博主微信公众号

  • 相关阅读:
    maven junit.framework不存在问题解决
    maven项目在打war包时出现非法字符: 'ufeff' 解决方案
    如何隐藏tomcat命令窗口
    小程序如何生成开发版的带参二维码
    小程序码生成随记
    生活中的一些笔记
    存储过程
    项目出现 The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path 解决方法
    maven环境配置详解,及maven项目的搭建及maven项目聚合
    sqldeveloper和plsqldebeloper
  • 原文地址:https://www.cnblogs.com/chenhaoblog/p/13604727.html
Copyright © 2011-2022 走看看