MySQL数据库大小写敏感的问题

在MySQL中,数据库对应数据目录中的目录。数据库中的每个表至少对应数据库目录中的一个文件(也可能是多个,取决于存储引擎)。因此,所使用操作系统的大小写敏感性决定了数据库名和表名的大小写敏感性。这说明在大多数Unix中数据库名和表名对大小写敏感,而在Windows中对大小写不敏感。 一个显著的例外情况是Mac OS X,它基于Unix但使用默认文件系统类型(HFS+),对大小写不敏感。

在windows下表名不区分大小写,所以在导入数据后,有可能所有表名均为小写,而再从win导入linux后,在调用时就容易出现大小写的问题。例如:

第一点:程序调用表名为:codetc_Web;

第二点:导入win后变为codetc_web;

第三点:再导入linux后也是codetc_web,此时linux会区分表名的大小写,则导致该表无法读取。

在linux下mysql表名大小写问题解决方法:

修改my.cnf,一般位于:/etc/my.cnf,在该文件中找到[mysqld]节下加入如下语句(注意如果已经存在该语句,请将值改为1即可):

lower_case_table_names=1

1、Linux下mysql安装完后是默认:区分表名的大小写,不区分列名的大小写;

2、用root帐号登录后,在/etc/my.cnf 中的[mysqld]后添加添加lower_case_table_names=1,重启MYSQL服务,这时已设置成功:不区分表名的大小写;

lower_case_table_names 参数详解:

lower_case_table_names = 0或1

其中 0:区分大小写,1:不区分大小写

MySQL在Linux下数据库名、表名、列名、别名大小写规则是这样的:

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

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

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

4、变量名也是严格区分大小写的;

MySQL在Windows下都不区分大小写的,如果需要在查询时区分字段值的大小写,则需要将查询字段值需要设置BINARY属性,设置的方法有如下几种方法:

(1)创建时设置:

CREATE TABLE T(A VARCHAR(10) BINARY);

(2)使用alter修改:

ALTER TABLE `tablename` MODIFY COLUMN `cloname` VARCHAR(45) BINARY;

(3)mysql table editor中直接勾选BINARY项。

要让mysql查询区分大小写,可以:

select * from table_name where binary a like 'a%'
select * from table_name where binary a like 'A%'  

也可以在建表时,加以标识

create table table_name(
   a varchar (20) binary
) 

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接

(0)

相关推荐

  • 解决MySQl查询不区分大小写的方法讲解

    问题 最近,在用SSH框架完成一个实践项目时,碰到了一个莫名其妙的Bug困扰了我好久,最后终于解决,记录如下. 问题:同学在测试系统的时候突然发现,数据库保存的账户本来应该是admin,结果该同学用Admin账户居然登录成功了-- --EXM???这样也行?好吧,我还是查找这个Bug发生的原因吧.然后就是各种排查程序的过程,找来找去也没发现什么问题.终于想到,不用hql,自己写sql语句在数据库里面直接查询试试,结果果然发现了问题所在: select * from user where user

  • mysql表名忽略大小写配置方法详解

    linux下mysql默认是要区分表名大小写的.mysql是否区分大小写设置是由参数lower_case_table_names决定的,其中: 1)lower_case_table_names = 0  区分大小写(即对大小写不敏感),默认是这种设置.这样设置后,在mysql里创建的表名带不带大写字母都没有影响,都可以正常读出和被引用. 2)lower_case_table_names = 1  不区分大小写(即对大小写敏感).这样设置后,表名在硬盘上以小写保存,MySQL将所有表名转换为小写存

  • MySQL中查询的有关英文字母大小写问题的分析

    mysql数据库在做查询时候,有时候是英文字母大小写敏感的,有时候又不是的,主要是由mysql的字符校验规则的设置决定的,通常默认是不支持的大小写字母敏感的.  1. 什么是字符集和校验规则? 字符集是一套符号和编码.校对规则是在字符集内用于比较字符的一套规则.任何一个给定的字符集至少有一个校对规则,它可能有几个校对规则.要想列出一个字符集的校对规则,使用SHOW COLLATION语句. 校对规则一般有这些特征: 两个不同的字符集不能有相同的校对规则.     每个字符集有一个默认校对规则.例

  • Linux系统MySQL忘记密码,重置密码,忽略表名、列名大小写的方法

    在linunx系统刚装的MySQL,忘记曾经设置的密码或者安装过程无法设置密码时,试图用常用的密码猜测,如:1,11,111,1111,11111,111111,123456,000000,1234321等等最简单的默认密码来试探,结果试遍了也不对,还是无法进入mysql.原因可能是你当初设置的密码比较复杂后来给忘了,更可能的原因是你安装过程中没允许设置密码,这样的密码一般是MySQL随机生成的一大串由大小写字母.数字和符号组合成的复杂密码.这样的密码不需要白费力去试探了,这就需要通过特殊的方式

  • 详解MySQL查询时区分字符串中字母大小写的方法

    如果你在mysql有唯一约束的列上插入两行值'A'和'a',Mysql会认为它是相同的,而在oracle中就不会.就是mysql默认的字段值不区分大小写?这点是比较令人头痛的事.直接使用客户端用sql查询数据库. 发现的确是大小不敏感 . 通过查询资料发现需要设置collate(校对) . collate规则: *_bin: 表示的是binary case sensitive collation,也就是说是区分大小写的 *_cs: case sensitive collation,区分大小写 *

  • MySql查询不区分大小写解决方案(两种)

    当我们输入不管大小写都能查询到数据,例如:输入 aaa 或者aaA ,AAA都能查询同样的结果,说明查询条件对大小写不敏感. 解决方案一: 于是怀疑Mysql的问题.做个实验:直接使用客户端用sql查询数据库. 发现的确是大小不敏感 . 通过查询资料发现需要设置collate(校对) . collate规则: *_bin: 表示的是binary case sensitive collation,也就是说是区分大小写的  *_cs: case sensitive collation,区分大小写  

  • MySQL大小写敏感导致的问题分析

    MYSQL对大小写敏感 见字如面,见标题知内容.你有遇到过因为MYSQL对大小写敏感而被坑的体验吗? 之前看过阿里巴巴Java开发手册,在MySql建表规约里有看到: [强制]表名.字段名必须使用小写字母或数字 , 禁止出现数字开头,禁止两个下划线中间只 出现数字.数据库字段名的修改代价很大,因为无法进行预发布,所以字段名称需要慎重考虑. 说明: MySQL 在 Windows 下不区分大小写,但在 Linux 下默认是区分大小写.因此,数据库名. 表名.字段名,都不允许出现任何大写字母,避免节

  • MySQL数据库大小写敏感的问题

    在MySQL中,数据库对应数据目录中的目录.数据库中的每个表至少对应数据库目录中的一个文件(也可能是多个,取决于存储引擎).因此,所使用操作系统的大小写敏感性决定了数据库名和表名的大小写敏感性.这说明在大多数Unix中数据库名和表名对大小写敏感,而在Windows中对大小写不敏感. 一个显著的例外情况是Mac OS X,它基于Unix但使用默认文件系统类型(HFS+),对大小写不敏感. 在windows下表名不区分大小写,所以在导入数据后,有可能所有表名均为小写,而再从win导入linux后,在

  • gorm操作MySql数据库的方法

    1.表中字段区分大小写的设置 在使用gorm查询的时候,会出现账户名A和a是一样的情况,是因为mysql默认不区分大小写造成的 1.问题产生的原因 MySQL在Windows下都不区分大小写. MySQL在Linux下数据库名.表名.列名.别名大小写规则是这样的: 1.数据库名与表名是严格区分大小写的: 2.表的别名是严格区分大小写的: 3.列名与列的别名在所有的情况下均是忽略大小写的: 4.变量名也是严格区分大小写的: MySQL在查询字符串时是大小写不敏感的,在编绎MySQL时一般以ISO-

  • PHP7原生MySQL数据库操作实现代码

    php7中mysql的连接与使用与PHP5中大不相同 PHP5中mysql_connect()等函数大多被PHP7中类的成员函数所代替.PHP5中连接mysql是过程性的,而PHP7中强调了类的使用与面向对象的方法 $user = new mysqli(); //Connect to mysql $user->connect("localhost", "root", "q721@Ms67", "Student"); my

  • MySQL数据库配置信息查看与修改方法详解

    目录 摘要 查看 查看数据基本信息 查询sql_mode 查看在配置文件中定义的变量 查看MySQL的服务当前运行时的变量 查看MySQL默认认证方式 修改MySQL的系统变量 根据变量修改的方式 根据变量的生效范围 总结 摘要 当在不同团队间使用MySQL数据库时,最好是保证数据库的配置信息是一致的,否则会因为不同开发同事的SQL规范不一样,导致出现一些不必要的SQL问题: 本篇博客,主要记录如何查看数据的配置信息,及相关解释. 查看 查看数据基本信息 查看版本 查看版本 select ver

  • MySQL数据库设计之利用Python操作Schema方法详解

    弓在箭要射出之前,低声对箭说道,"你的自由是我的".Schema如箭,弓似Python,选择Python,是Schema最大的自由.而自由应是一个能使自己变得更好的机会. Schema是什么? 不管我们做什么应用,只要和用户输入打交道,就有一个原则--永远不要相信用户的输入数据.意味着我们要对用户输入进行严格的验证,web开发时一般输入数据都以JSON形式发送到后端API,API要对输入数据做验证.一般我都是加很多判断,各种if,导致代码很丑陋,能不能有一种方式比较优雅的验证用户数据呢

  • Node.js下向MySQL数据库插入批量数据的方法

    项目(nodejs)中需要一次性插入多笔数据到数据库,数据库是mysql的,由于循环插入的性能太差,就像使用批量插入的方法提高数据的插入性能. 批量插入的数据库的表结构如下: 1.数据库连接 var mysql = require('mysql'); // 数据库信息 var connection = mysql.createConnection({ host : 'localhost', user : '数据库用户名', password : '数据库登录密码', database : '操作

  • java jdbc连接mysql数据库实现增删改查操作

    jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打交道非常基础的一个知识,也是比较接近底层的,在实际的工作中大家用得更多的其实还是比较成熟的框架,例如Hibernate.Mybatis. 但是作为这些成熟框架的底层的jdbc却也是我们应该去掌握的,只有了解了jdbc的增删改查,这样在以后如果有兴趣去研究Hibernate或者Mybatis的源代码的时候才能更好的去理解这些成熟的框架是如何去实现增删改查

  • ASP.NET操作MySql数据库的实例代码讲解

    一.把MySql.Data.dll放到BIN目录下. 二.这是aspx.cs的全部源码,修改参数直接运行即可!   using MySql.Data.MySqlClient; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; publ

  • C#连接MySql数据库的方法

    1.要连接MySql数据库必须首先下载MySql官方的连接.net的文件,文件下载地址为http://dev.mysql.com/downloads/connector/net/6.6.html#downloads ,下载平台选择.Net&Mono,下载ZIP免安装版.2.解压缩刚才下载的mysql-connector-net-6.6.6-noinstall.zip文件,里面有几个版本选择,在这里我选V4, 选中这几个文件,然后添加到C#项目的引用中,然后就可以编写程序进行数据库的操作了. 3.

  • 详解mysql数据库中文乱码问题

    当向 MySQL 数据库插入一条带有中文的数据形如 insert into employee values(null,'张三','female','1995-10-08','2015-11-12','Sales',2000,'是个好员工!'); 出现乱码时,可以使用语句 show variables like 'character%'; 来查看当前数据库的相关编码集. 从上图中可以看到 MySQL 有六处使用了字符集,分别为:client .connection.database.results

随机推荐