MySQL大小写敏感的解决方案

2023-11-12

不同的MySQL版本有不同的默认设定,具体情况需要具体分析。

mysql是通过lower_case_table_names参数来控制大小写敏感的,该参数在[mysqld]节点下。具体的含义笔者从官网截了一张图。

① 关于lower_case_table_names参数对表名称或数据库名称大小写敏感的控制。

② Unix下默认为0,也就是大小写敏感的;Windows下默认为1,不敏感;macOS默认为2,存储区分大小写,但是在查询时会转换为小写。

③ 对于在大小写不敏感的系统(Windows和macOS)不能将该字段设置为0。

二、出现的问题

Linux下默认lower_case_table_names=0,对表明的大小写是敏感的。注:笔者数据版本为5.7.22。

lower_case_file_system:OFF表示大小写敏感,ON表示大小写不敏感。lower_case_table_names:0表示敏感,1表示不敏感。

lower_case_file_system是一个只读参数,无法被修改,这个参数是用来告诉你在当前的系统平台下,是否对文件名大小写敏感。

创建test表,并插入一条数据

# 案例一

分析:对比两组查询,可以知linux下,mysql默认对表名大小写敏感。

# 案例二

分析:利用‘Aa’和‘aa’查询出相同的结果,说明查询时对字段内容进行了转换(大写转换成小写),造成了这一现象。

# 案例三

分析:在查询时,对字段‘Name'也可查询结果,表明在查询时对字段的大小写不敏感。

综上,可以得出如下结论:

① linux默认情况下,对数据库名和表名的大小写是敏感的,因为linux系统本身对大小写就敏感。

② 字段内容大小写不敏感。

③ 列名大小写不敏感。

对于上述出现的问题,对实际的业务还是有相应影响的,因此应寻找对应的解决方案。

三、字段内容及列名大小写不敏感的解决方案

① 创建表时,将字段标记为binary,二进制大小写是敏感的。

② 在查询条件的字段前加binary,但是不建议这么做,因为会使字段索引失效。

③ 建表时设置校对规则(collate)。

collate规则:

  • *_bin: 表示的是binary case sensitive collation,也就是说是区分大小写。
  •  *_ci: case insensitive collation,不区分大小写 。

④  如果建表时校对规则未用*_bin,则可直接修改字段的属性。

alter table test3 modify name varchar(20) collate utf8_bin;

四、总结

只要在创建表的时候指定collate为utf8_bin,就可以实现大小写敏感,如果建表时未指定,则可修改字段的校对规则,也可以实现大小写敏感。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL大小写敏感的解决方案 的相关文章

  • 使用 Python 2.7 和 MySQLdb 将二进制数据插入 MySQL 中的 blob 列时如何避免编码警告

    我在将二进制数据插入到longblob使用 Python 2 7 中的 MySQLdb 在 MySQL 中的列 但我收到一个编码警告 我不知道如何解决 test py 11 Warning Invalid utf8 character st
  • 如何为 MySQL 和 Postgres 编写不区分大小写的查询?

    我在本地运行 MySQL 数据库进行开发 但部署到使用 Postgres 的 Heroku Heroku 处理几乎所有事情 但我不区分大小写的 Like 语句变得区分大小写 我可以使用 iLike 语句 但我的本地 MySQL 数据库无法处
  • 根据 MySQL 列内容的长度创建索引?

    如何根据值的长度在 MySQL v 5 0 myisam 数据库引擎 中的列上创建索引 它是文本数据类型 最多 7000 个字符 我是否必须添加具有第一列长度的另一列 是的 因为 MySQL 不支持基于函数的索引 例如ADD INDEX m
  • MySql如何通过过滤多列来限制多个数字?

    我想从数据库中获取 4 个不同类别的 50 个问题 我想要 4 个不同类别中每个类别的不同数量的问题 我的结果集必须包含第一类 12 个问题 第二类 20 个问题 第三类 10 个问题和第四类 8 个问题 我的问题表中总共有 50 个问题
  • 不唯一的表/别名

    因此 我尝试使用多个联接来运行此查询 以获得我想要的精确行 但我不断收到此错误 不唯一的表 别名 ss prices 我正在运行的查询 select ss accounts id ss accounts bot acc id ss acco
  • UNIX时间记录时区吗?

    我想问一下UNIX时间 UNIX时间是否记录时区 我将托管从美国芝加哥移至 JST 问题是我的整个 MySQL 数据库都有 UNIX 时间 芝加哥 美国时区 的记录 我有一个 PHP 代码来显示之前的时间 例如 3 天前 昨天等 当我搬到新
  • 使用 pip3 安装 mysqlclient 时遇到问题

    我正在尝试使用 Django 设置 python 3 6 环境 安装说明说我应该安装 mysqlclient 才能连接到 mySQL 我明白了 dennis django sudo H pip3 install mysqlclient Co
  • 按 MAX(time) WHERE time <= x 选择最近的 MySQL 行

    我正在选择 MySQL 表的最新条目 SELECT MAX time as most recent userID FROM TableName GROUP BY userID ORDER BY most recent DESC 我的问题是
  • PDO::commit 之后使用 PDOStatement::rowCount 结果?

    在 MySQL 文档中 有一个关于使用的注释mysql affected rows事务提交后 http php net manual en function mysql affected rows php http php net manu
  • 基于列顺序的查询速度

    数据库中列类型的顺序对查询时间有影响吗 例如 具有混合排序 INT TEXT VARCHAR INT TEXT 的表的查询速度是否会比具有连续类型 INT INT VARCHAR TEXT TEXT 的表慢 答案是肯定的 这确实很重要 而且
  • 使用 PHP 代码和 HTML 表单将 Excel (.csv) 导入 MySQL

    我知道还有其他类似的帖子 但每个人都建议直接在 PHPMyAdmin 中将其导入 MySQL 这工作完美 但我需要通过 HTML 表单导入 PHP 到 MySQL 我想要一个收集文件的 HTML 表单 然后将该文件传递给 PHP 脚本 我想
  • 使用 EXPLAIN 进行 MYSQL 存储过程调用

    如何分析和使用 EXPLAIN 来调用我的存储过程 我需要优化查询时间 但是似乎没有地方可以执行 EXPLAIN 调用 proc name 你可以试试 set profiling 1 call proc name show profiles
  • Spark SQL/Hive 查询通过 Join 永远持续下去

    所以我正在做一些应该很简单的事情 但显然它不在 Spark SQL 中 如果我在 MySQL 中运行以下查询 查询将在不到一秒的时间内完成 SELECT ua address id FROM user u inner join user a
  • 如何使用实体框架设置连接字符串

    我将 EF6 与 MySQL 结合使用 并有一个用于多个数据库的模型 我希望能够在我的表单中设置连接设置 如何以编程方式设置模型的连接字符串 你应该使用EntityConnectionFactory这就是您所需要的 public strin
  • 在 MySQL 中将行转置为列

    如何在 MySQL 查询中将行转换为列 您可以将行变成a列与GROUP CONCAT 但您无法以任何自动方式转置整个结果集 您可以编写手动生成每一列的查询 也可以在应用程序中执行此操作 以下是有关编写复杂查询来模拟转置的教程 http ww
  • PMA 4.5.2.0 file_exists():open_basedir 限制生效

    从 PPA 在我的 Ubuntu 服务器上安装 phpMyAdmin 后 https launchpad net nijel archive ubuntu phpmyadmin https launchpad net nijel archi
  • 使用MySQL计算单个表中借方和贷方的余额

    下面的 MySQL 表包含带有关联金额的借方或贷方 操作 如何选择具有非零 余额 的所有 CLIENT ID 我尝试将表连接到自身以计算所有借方和贷方总额 但有些东西无法正常工作 CLIENT ID ACTION TYPE ACTION A
  • PHP/MySQL:如何在网站中创建评论部分[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我不会问 如何使用 PHP MySQ
  • 让 Prometheus 发送 SQL 查询

    我正在尝试使用普罗米修斯 https prometheus io 监视我的 MySQL 数据库 但似乎找不到添加 SQL 查询的区域 例如 我想运行一个返回值的 SQL 查询 然后将该值添加到图表中 发送警报 有没有办法让 Promethe
  • 通过将行旋转为动态数量的列来在 MySQL 中创建摘要视图

    我在 MySQL 中有一个表 其中包含以下字段 id company name year state 同一客户和年份有多行 以下是数据示例 id company name year state 1 companyA 2008 1 2 com

随机推荐

  • JAVA错误: 在类中找不到主方法, 请将主方法定义为:public static void main(String[] args)

    一个类只有包含了入口才能运行 这个入口告诉了系统从哪开始运行程序 入口的格式固定 例如 class test public static void main String args 入口代码
  • 拷贝粘贴踩坑之Content-length

    最近在开发时遇到需要上传文件的功能 我自然而然地上网找了段实现上传功能的代码 我的程序有两个地方需要上传文件 这段代码在一处能用 另一处就报错了 代码如下 File file new File 文件路径 MultipartEntityBui
  • linux与windows文件共享及全屏

    1 安装VMware tools 虚拟机选项 安装VMware tools 然后在Ubuntu系统中弹出的VMware tools窗口中 找到VMwaretools 9 6 0 1294478 tar gz 复制到桌面 然后在桌面上的VMw
  • [python]windos下打包一个简单的python脚本

    1 脚本一览 python脚本如下 结构比较简单 基本功能是根据已有的名单去统计群里面没有参加接龙的人员和人数 脚本只涉及到python自带的库 并且在运行时需要读取同目录下的两个txt文件 最后打印出没有统计结果 import os st
  • 微信营销系统如何使用效果会更好

    微信作为中国最大的社交平台之一 已经成为企业私域营销的重要阵地 在这个庞大的社交网络中 如何使用微信营销系统 将直接影响到企业的营销效果 本文将深入探讨如何更好地利用微信营销系统 以实现更好的私域营销效果 1 确定营销目标和策略 在使用微信
  • Java手写ArrayList和拓展案例

    Java手写ArrayList 思维导图 mermaid svg ncipf5YgQSnFk37I font family trebuchet ms verdana arial sans serif font size 16px fill
  • 没遇到过这三个问题都不好意思说用过Redis

    缓存是互联网应用中不可或缺的一部分 而提到缓存 就不得不提它的三个经典问题 缓存穿透 缓存击穿和缓存雪崩 我称它们为缓存问题三兄弟 缓存的作用主要有两个 一来提升访问速度 二来保护数据库 在业务量不大的时候 通常没什么大问题 但当业务量起来
  • C语言-->调用函数计算学生成绩平均分、课程平均分等。

    这是一道c语言的课后题 题目如下 输入10个学生5分课程的成绩 分别用函数实现下列功能 1 计算每个学生的平均分 2 计算每门课的平均分 3 找出所有50个分数中最高的分数对应的学生和课程 4 计算平均分方差 十个学生五门课的成绩 用函数实
  • 实现数组的逆序存放

    今天分享给大家一个实现逆序输出数组的程序 咱们先上代码 define CRT SECURE NO WARNINGS 1 include
  • Android 9.0 根据包名清理应用数据

    1 前言 在9 0的系统ROM定制化开发中 在系统原生设置中 可以在app的详情页里面看到清理缓存 清理数据等选项 而在最近的rom产品定制化中 有产品需求要求 在第三方app 的接口中 调用接口来实现清除app里面的数据 在Activit
  • 常见状态码 【最全状态码展示】

    一 什么是状态码 HTTP状态码 HTTP Status Code 是用以表示网页服务器HTTP响应状态的3位数字代码 它由 RFC2616 规范定义的 并得到RFC 2518 RFC 2817 RFC 2295 RFC 2774 RFC
  • C语言 字符指针的定义与初始化

    1 字符指针定义说明 指向字符串的指针称为字符指针 其定义形式为 char 指针名 在定义字符指针的同时为其赋值称为字符指针的初始化 如 void main char p Hello printf s p 定义一个字符指针p 并使指针p得到
  • 如何用最通俗易懂的方式理解假设检验

    https blog csdn net wydyd110 article details 82387653
  • 日本半导体制造商AKM工厂失火停产,市场再次掀起抢货潮!

    数据猿年度重磅活动预告 2020年度金猿策划活动 金猿榜单发布 金猿奖杯颁发 即将推出 尽情咨询期待 大数据产业创新服务媒体 聚焦数据 改变商业 据日本共同社报道 10月20日 旭化成旗下集团公司从事半导体制造的旭化成微电子株式会社 简称
  • C++从0到1(2):数据类型

    目录 1 整型 2 sizeof关键字 3 实型 浮点型 4 字符型 5 转义字符 6 字符串型 7 布尔类型 8 cin 数据的输入 C 规定在创建一个变量或常量时 必须要指定相应的数据类型 否则无法给变量分配内存 数据类型存在的意义 给
  • 富文本编辑器的使用方法

    富文本编辑器又称Rich Text Editor 简称RTE 它不同与文本编辑器 程序员可以到网上下载免费的富文本编辑器嵌于自己设计的网站或者程序里 方便用户编辑文章或者信息 主要用于发新闻类似的东西 它有着和word文档还有网上发论坛插图
  • ssd测试mAP的时候出现tensorflow版本问题,问题 _variable_v2_call() got an unexpected keyword argument ‘collections’

    这个问题是Tensorflow 版本太高导致的 我原来使用的 1 13 1 的版本不行 换成了 1 10 1就可以了
  • 2023年新能源汽车行业研究报告

    第一章 行业概况 新能源汽车 是指采用新型动力系统 完全或者主要依靠新型能源驱动的汽车 包括纯电动汽车 插电式混合动力汽车 增程式混合动力汽车和燃料电池汽车等 国际上 混合动力汽车 含中混 强混 插电式混动 汽车 天然气汽车 纯电动汽车和燃
  • 《一周搞定模电》—基本放大电路

    文章目录 TOC 文章目录 一 三极管放大电路 1 饱和失真和截至失真 2 静态工作点 二 放大电路改进 分压偏置电路 一 三极管放大电路 下图是共发射极放大电路 R8两端的电压值与输入信号是反向关系 仿真图如下所示 1 饱和失真和截至失真
  • MySQL大小写敏感的解决方案

    不同的MySQL版本有不同的默认设定 具体情况需要具体分析 mysql是通过lower case table names参数来控制大小写敏感的 该参数在 mysqld 节点下 具体的含义笔者从官网截了一张图 关于lower case tab