• mysql区分大小写问题


    【1】mysql 表的大小写和字段的大小写

      

    数据库存储的varchar类型字符串查询时不区分大小写。

    简而言之: 通过 show variables like 'lower_case_table_names' 查看值, 0代表严格区分, 1代表不区分,

    通过修改mysql的配置my.cnf文件更改然后重启,即可达到预期的效果。

    【2】一些疑惑

    (1)mysql 【表名】是否区分大小写?

      使用dushow Variables like '%table_names’查看 lower_case_table_names 的值,0代表区分,1代表不区分。

      mysql对于表名的策略与 varchar 类型数据相同。

        即:默认不区分大小写,但如果该表是以“*_bin”编码的话会使mysql对其区分大小写。

    (2)mysql 【字段名】是否区分大小写?

      mysql对于字段名的策略与 varchar 类型数据相同。

      即:默认不区分大小写,但如果该字段是以“*_bin”编码的话会使mysql对其区分大小写。

    (3)mysql 【行内容】的是否区分大小写?

      mysql对于类型为 varchar 数据默认不区分大小写,但如果该字段以“*_bin”编码的话会使mysql对其区分大小写。

      如:列不显示写,就默认继承了表的字符集和排序规则,表不显示写就继承了数据库的字符集与排序规则,库不显示写,就继承了配置文件(即实例级别)的字符集与排序规则

    ALTER DATABASE databasename CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;

    (4)修改后,对现有表的影响?

      如果现有表的字符集及排序规则与你要修改的不一样或不兼容,那么你无法改变这个表的属性;

      比如:

    本身有code字段,修改表的字符集为 utf8mb4_bin 后
    再加CODE字段, utf8mb4_bin加不进去的;会报错

    【3】Linux 与 Windows 下的默认区别

    注意:表和字段的编码尽量继承数据库的编码(不明显指定即继承),以免引起混乱。
    LINUX下的MYSQL默认是要区分表名大小写的 ,而在windows下表名不区分大小写
      让MYSQL不区分表名大小写的方法其实很简单:
      1.用ROOT登录,修改/etc/my.cnf
      2.在[mysqld]下加入一行:lower_case_table_names=1

  • 相关阅读:
    设计模式一:简单工厂模式
    排序算法一:冒泡排序
    设计模式三:工厂方法模式
    设计模式二:单例模式
    >Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause
    eclipse打开会出现初始化错误>解决办法
    easyui页面上的增删改功能
    springboot集成druid数据源
    springboot集成shiro的验证
    Java虚拟机
  • 原文地址:https://www.cnblogs.com/gered/p/14751685.html
Copyright © 2020-2023  润新知