首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

mysql 命令设置大小写敏感

基础概念

MySQL中的大小写敏感问题主要涉及到数据库、表名、列名以及SQL语句的大小写敏感性。MySQL默认情况下,标识符(如数据库名、表名、列名等)是大小写不敏感的,但具体行为可能依赖于操作系统和MySQL配置文件(my.cnf)中的设置。

相关优势

  • 大小写敏感:可以更精确地控制数据的访问和处理,避免因大小写不同而导致的意外数据修改或访问。
  • 安全性:在某些情况下,大小写敏感可以提高系统的安全性,防止潜在的SQL注入攻击。

类型

MySQL的大小写敏感性主要分为以下几种类型:

  1. 服务器级别:通过修改MySQL配置文件中的lower_case_table_names参数来设置。
  2. 数据库级别:某些存储引擎(如InnoDB)支持在数据库级别设置大小写敏感性。
  3. 表级别:通过创建表时指定ROW_FORMAT=COMPRESSED等选项来影响大小写敏感性。

应用场景

  • 开发环境:在开发过程中,为了模拟生产环境的严格性,可能会选择开启大小写敏感。
  • 国际化应用:在处理多语言数据时,大小写敏感可以确保数据的准确性和一致性。
  • 安全敏感应用:在金融、军事等对数据安全要求极高的领域,大小写敏感是必要的。

如何设置MySQL命令大小写敏感

修改配置文件

  1. 打开MySQL配置文件(通常是my.cnfmy.ini)。
  2. [mysqld]部分添加或修改以下行:
  3. [mysqld]部分添加或修改以下行:
  4. 注意:lower_case_table_names的值可以是0、1或2,具体含义如下:
    • 0:表名存储为创建时的大小写,比较时也是大小写敏感的。
    • 1:表名存储为小写,比较时不区分大小写。
    • 2:表名存储为创建时的大小写,但在比较时转换为小写。
  • 保存文件并重启MySQL服务。

命令行设置(临时)

在MySQL命令行中,可以使用以下命令临时设置大小写敏感性:

代码语言:txt
复制
SET GLOBAL lower_case_table_names = 0;

注意:这种方式设置的值在MySQL重启后会失效。

可能遇到的问题及解决方法

问题:修改lower_case_table_names后无法启动MySQL

原因:可能是由于之前的数据库对象(如表、视图等)已经创建,且大小写不匹配导致的。

解决方法

  1. 在修改配置文件之前,备份所有数据库。
  2. 将所有数据库对象导出为SQL文件。
  3. 修改配置文件并重启MySQL服务。
  4. 重新导入所有数据库对象。

问题:大小写敏感导致SQL语句执行失败

原因:可能是由于SQL语句中的大小写与数据库中的对象大小写不匹配。

解决方法

  1. 检查SQL语句中的大小写是否与数据库中的对象大小写一致。
  2. 如果需要,可以修改数据库对象的名称以匹配SQL语句中的大小写。

参考链接

通过以上设置和注意事项,可以有效地控制MySQL的大小写敏感性,以满足不同应用场景的需求。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

MySQL大小写敏感总结

MySQL中,数据库、表、triggers实际上都对应了datadir目录(或子目录)下的文件,因此,这些对象的名字是否大小写敏感主要是依赖于操作系统和文件系统的,因此这些内容在Windows中是大小写是不敏感的...):大小写敏感,数据按照CREATE 语句中的定义存储在磁盘,且在查询的时候是区分大小写的; 注意:不要在大小写敏感的系统上使用此设置,因为容易导致像MyISAM引擎表的索引崩溃; lower_case_table_names...=1(Windows default):大小写敏感MySQL将数据全部转化为小写形式存储在磁盘上,而且在查询的时候也是全部转化为小写进行比较; lower_case_table_names =2(...MAC OS X default):大小写敏感,大多数引擎是将数据按照CREATE 语句中的定义存储在磁盘上(Innodb是小写存储),但是在查询的时候全部转化为小写进行比较;这种设置仅适用于大小写敏感的操作系统...5、数据敏感性:由Mysql的校对字符集规则来控制(Collation),默认大小写敏感; 每一个字符型column都有一个“字符集属性(character set)”和一个“校对集属性(collation

3.6K40

MySQL中的大小写敏感

今天同事问了一个问题,是关于MySQL大小写敏感的。 如果根据关键字case来搜索,会发现有两个参数。...大小写敏感问题,在MySQL大体会分为两种类别,在Linux和Windows平台。...;    4、变量名也是严格区分大小写的; 而Windows下的MySQL却是大小写敏感的,所有表名和数据库名都会变成小写。...| aa | | 2 | newtest | +------+---------+ 2 rows in set (0.00 sec)如果要修改大小写敏感设置,比如设置大小写敏感,需要设置参数值...这个参数只能够保证登录用户密码的大小写敏感,其他还是和原来一样,12c中这个参数变了味儿,在新版本中已经过期, 在设置的时候务必需要保证sqlnet.ora中的设置需要兼容,文件中的参数SQLNET.ALLOWED_LOGON_VERSION_SERVER

2.6K60
  • mysql大小写敏感与校对规则

    大家在使用mysql过程中,可能会遇到类似以下的问题: ? 模糊匹配 jg%,结果以JG开头的字符串也出现在结果集中,大家很自然的认为是大小写敏感的问题。...那么mysql大小写敏感是如何控制的;数据库名,表名,字段名这些字典对象以及字段值的大小敏感是如何控制的;以及校验规则与索引的关系,这是本文要讨论的内容。...mysql中控制数据库名和表名的大小写敏感由参数lower_case_table_names控制,为0时表示区分大小写,为1时,表示将名字转化为小写后存储,不区分大小写。...在mysql中,数据库对应数据目录中的目录。数据库中的每个表至少对应数据库目录中的一个文件(也可能是多个,取决于存储引擎)。因此,所使用操作系统的大小写敏感性决定了数据库名和表名的大小写敏感性。...1:表名在硬盘上以小写保存,名称比较对大小写敏感MySQL将所有表名转换为小写在存储和查找表上。该行为也适合数据库名和表的别名。该值为Windows的默认值。

    5.1K10

    Mariadb数据库——设置Mariadb大小写敏感

    Mariadb数据库——设置Mariadb大小写敏感 背景 日常我们开发时,我们会遇到各种各样的奇奇怪怪的问题(踩坑o(╯□╰)o),这个常见问题系列就是我日常遇到的一些问题的记录文章系列,这里整理汇总后分享给大家...开发环境 系统:Ubuntu 数据库:Mariadb 内容 一、忽略大小写配置 在我们日常进行使用Mariadb时通常在程序里面会忽略掉大小写的区别,而Maradb默认安装完成后是区分大小写的,这时如果我们进行创建了数据库与表结构...,那么在使用时就需要和其名称、大小写一致方可进行操作。...,而修改该参数后,所有操作指令都会被转换为小写状态,即我们大写的SQL也会被转换为小写来进行响应,这时就会出现问题,之前大小写创建的数据库将不会被找到。...= 1 存储使用自动转换后的小写格式,读取比较时不区分大小写

    3.9K30

    小白学习MySQL - 大小写敏感问题解惑

    《Oracle中大小写敏感的问题》这篇文章介绍了Oracle数据库中对大小写敏感问题。...MySQL中的数据库对应到操作系统上存储的数据文件,因此像数据库名、表名、触发器名称等,是否大小写敏感就取决于他所在的操作系统。...例如在Windows就是大小写敏感,但是在大多数Unix就是大小写敏感的,其中一个例外,就是macOS,他采用HFS+文件类型,就是大小写敏感的,他采用UFS文件类型,就是大小写敏感。...MySQL中的列、索引、存储过程、事件名等在任何操作系统上都是大小写敏感的,但是列的别名则是例外。日志文件组的名称是大小写敏感的。...重新加载数据库, mysql < db1.sql mysql < db2.sql ... 大小写敏感的问题看着很小,但若不注意,尤其存在跨平台的需求,就会更加复杂。

    1.3K10

    MySQL中识别符大小写敏感性学习--MySql语法

    本文学习是MySQL中识别符大小写敏感性学习,在MySQL中,数据库对应数据目录中的目录。数据库中的每个表至少对应数据库目录中的一个文件(也可能是多个,取决于存储引擎)。...在MySQL中如何在硬盘上保存和使用表名和数据库名由lower_case_tables_name系统变量确定,可以在启动mysqld时设置。...名称比较对大小写敏感。在Unix系统中的默认设置即如此。...2 表名和数据库名在硬盘上使用CREATE TABLE或CREATE DATABASE语句指定的大小写进行保存,但MySQL将它们转换为小写以便查找。名称比较对大小写敏感。...如果只在一个平台上使用MySQL,通常不需要更改lower_case_tables_name变量。然而,如果你想要在对大小写敏感不同的文件系统的平台之间转移表,会遇到困难。

    1K30

    mysql 大小写敏感的一个解决方案

    今天,有同事告诉我,我们游戏登陆的时候,账号和密码没有区分大小写,后来又发现创建账号和角色也没有区分大小写。思考登陆流程之后,应该是Mysql没有区分大小写敏感的问题。      ...在网上查了一下资料,Mysql支持大小写敏感的解决方案。发现了几种方案。      ...第一、修改数据库的设置,让Mysql支持大小写敏感,这个方案太激进了,数据库数据太多,这样改保不准会出什么问题。      第二、修改表结构和字符集,和第一种方案差不多,但是风险小一点。      ...体方法是,使用mysql的binary关键字。      BINARY不是函数,是类型转换运算符,它用来强制它后面的字符串为一个二进制字符串,可以理解为在字符串比较的时候区分大小写。      ...测试如下:      mysql> select binary 'ABCD'='abcd' ret1, 'ABCD'='abcd' ret2;      +--------+--------+

    99910

    在Linux下管理MySQL大小写敏感

    本指南深入探讨了MySQL中的大小写敏感设置,比较了5.7和8.0版本,并为Java开发者提供了最佳实践。...1 理解MySQL中的大小写敏感性 默认情况下,MySQL在Windows上是大小写敏感的,但在Linux上是大小写敏感的。这种差异可能导致不一致性,特别是在迁移数据库或开发跨平台应用程序时。...2 MySQL 5.7大小写敏感设置MySQL 5.7中,默认在Linux上的设置是lower_case_table_names = 0,这意味着表名是大小写敏感的。...mysql 3 MySQL 8.0大小写敏感设置MySQL 8.0中,大小写敏感行为与MySQL 5.7保持一致。...使用Hibernate等ORM工具可以帮助管理大小写敏感性,但正确配置它们至关重要。 测试: 在模拟生产设置的环境中彻底测试您的应用程序,特别是如果生产环境是大小写敏感的。

    47100

    LinuxMacOS 终端大小写敏感问题

    inputrc变量配置 变量配置的语法如下: set variable value 常见的变量和配置如下: completion-ignore-case #如果设置为开(on),在自动补全时不区分大小写...如果设置为开(on),当自动补全的结果有一个以上时,会直接列出这些结果。如果设置为关(off),就会提示一个beep蜂鸣声,当再按下tab时才会列出自动补全的结果。默认这项配置为关。...设置 MacOS 下自动补全不区分大小写 通过上面的介绍,解决这个问题应该是绰绰有余了。...打开用户主目录下的文件~/.inputrc(如果没有的话,就新建该文件),在其中添加如下配置: # 设置自动补全不区分大小写 set completion-ignore-case on # 当有一个以上自动补全结果时...,直接列出,不用beep提示 set show-all-if-ambiguous on 保存该文件,然后,重启命令行,就会发现自动补全不区分大小写已经生效了。

    93520

    Oracle中大小写敏感的问题

    上周组内例会,提到不同数据库中大小写敏感的问题,问题很小,但是如果不注意,尤其是开发不规范的场景,很容易进坑。 首先,我们看下Oracle中对大小写的处理。...OBJECT_NAME -------------------------------------------------------------------------------- test2 要说大小写敏感...,这个参数算一个,sec_case_sensitive_logon,他会控制用户密码的大小写敏感敏感,11g中默认为ture,密码大小写敏感,如果改为false,则为不敏感, SQL> show parameter...,作用和上述相同, 除此之外,其他的对象,字段、视图、索引、序列等,都是大小写敏感的。...但是,其他一些数据库,有的是大小写敏感,有的习惯使用大小写混合定义,当做这些数据库迁移的时候,就得注意程序中,大小写的问题,避免带来不必要的麻烦。

    1.9K10

    mysql 设置主键命令_MySQL常用命令

    1、修改MySQL密码 方法一: use mysql; update user set password=PASSWORD(“123456”) where user=‘root’; flush privileges...那么password字段要改成authentication_string 创建数据库用户: 单纯的创建:create user ‘name’@‘host’ identified by ‘密码’ 创建时设置用户权限...10,不允许该字段为空 删除:drop table 表名称 drop table test 4、表中插入数据 insert into test(id) values(1002); #此处注意如果字段值设置为...table userinfo add index user(name); #user表示索引名称,自定义 删除索引:alter table userinfo drop index user; 10、常用查询命令...有哪些用户 select user from mysql.user\G 查询指定字段信息 select user,host,password from mysql.user; 查询指定用户权限信息 show

    3.8K20
    领券