zoukankan      html  css  js  c++  java
  • mysql在Linux下大小写敏感设置

      默认情况下,mysql在windows下是不区分大小写的,但是mysql在linux下大小写规则是这样的:

      1、数据库名与表名是严格区分大小写的;

      2、表的别名是严格区分大小写的;

      3、列名与列的别名在所有的情况下均是忽略大小写的;

      4、表中字符格式的数据是忽略大小写的,这一点不合理!

      针对上面几点,比如按默认配置创建一个数据库test和表dept,表中一条数据(数据库mysql5.7):

      

      那么当我们进行下面操作时,将会报错:  

      -- 报错1049,库名是test
      USE Test;
      -- 报错1146,表名是dept
      SELECT * FROM Dept;
      -- 报错1054,表别名是d
      SELECT * FROM dept d WHERE D.`Id`=1;
      -- 不报错,但是数据没有区分大小写(like也不区分)
      SELECT * FROM dept WHERE NAME='SALE';

      这些大小写敏感问题可能让我们这些开发者有点不适应,解决方案如下:

      针对上面的1和2两点,我们可以在配置文件中的mysqld节点添加一行配置:

      lower_case_table_names = 1

      参数解释:0:区分大小写  1:不区分大小写

      顺带提一下,这里说下这个配置文件,先进入mysql的主目录,在目录下会有个my.cnf文件,打开查看里面有没有mysqld节点配置,我这里是没有的,里面是:  

    !includedir /etc/mysql/conf.d/
    !includedir /etc/mysql/mysql.conf.d/

      想必这两个指的是mysql配置文件的目录,然后分别进入这两个目录,发现/etc/mysql/mysql.conf.d/目录下的mysqld.cnf文件里有mysqld节点配置,然后将上面配置加上(存在则修改)即可:

      

       如果都没有找到mysqld节点,那直接在my.cnf中加上mysqld节点,再将上面的配置加上(存在则修改)即可

       修改完成需要重启下mysql服务:service mysql restart

      mysql8只能在数据库初始化时才有效,数据库创建好之后就不能修改大小写敏感设置了,这一点着实有点坑人

       第3点是正常的,我们也是希望列名与列的别名不区分大小写,但是第4点太不正常了,解决方案如下:

       如果我们还没有建表,那么可以在建表时指定列设置BINARY属性,即区分大小写,如上面创建dept表:  

      CREATE TABLE `test`.`dept`(  
        `Id` INT(11) NOT NULL AUTO_INCREMENT,
        `Name` VARCHAR(100) BINARY NOT NULL,
        `Desc` VARCHAR(1000) BINARY,
        PRIMARY KEY (`Id`)
      );

      如果我们表已经创建好了,可以使用Alter命令修改BINARY属性:  

      ALTER TABLE dept MODIFY COLUMN `Name` VARCHAR(100) BINARY NOT NULL;

      还有,如果我们不想修改BINARY属性,我们可以在查询的时候,在查询条件前加BINARY属性:  

      SELECT * FROM dept WHERE BINARY NAME='SALE';
  • 相关阅读:
    Oracle 分区索引
    linux中select网络通信
    AVL树,红黑树,B-B+树,Trie树原理和应用
    zoj1232Adventure of Super Mario(图上dp)
    怎样更改Linux中默认的openjdk为自己安装的JDK
    食用甜玉米:增进健康,老少皆宜
    设计模式【3】:抽象工厂【创建对象】
    centos 7 安装JDK (Linux安装jdk)
    微信支付v3开发(5) 扫码并输入金额支付
    微信支付v3开发(6) 收货地址共享接口
  • 原文地址:https://www.cnblogs.com/shanfeng1000/p/12269259.html
Copyright © 2011-2022 走看看