Django + MySQL 查询不区分大小写问题 Posted May 29, 2018 最近发现一个现象是测试环境的 sqlite 是可以区分大小写的。...就不区分大小写了。...由于测试环境的 sqlite 没有问题, 所以怀疑在 mysql 的配置上面。...原来是字符集校对规则的问题, utf8_general_ci 不区分大小写, 可以改成utf8_bin(将字符串中的每一个字符用二进制数据存储,区分大小写。)...我找到另外的一种解决方式 通过 DJANGO ORM 的extra, 在匹配语句上面加上BINARY来区分大小写.
如下,我的一个Windows下的项目移植到Linux环境中就因为MySQL严格区分大小写问题报错: ? ? ?...这个时候怎么办呢,显然改程序是不行的,时间上也不允许,所以只能设置MySQL数据库不区分大小写了,大家看以下步骤: 1、查询MySQL是否设置了区分大小写 show variables like "%case...其中lower_case_table_names代表了:0是区分大小写; 1是不区分大小写。显然我这个MySQL是区分大小写的。...拓展知识 MySQL在Linux下数据库名、表名、列名、别名大小写规则是这样的: 1、数据库名与表名是严格区分大小写的; 2、表的别名是严格区分大小写的; 3、列名与列的别名在所有的情况下均是忽略大小写的...; 4、变量名也是严格区分大小写的; MySQL在Windows下都不区分大小写。
在linux环境下表名是区分大小写的 问题 执行SHOW VARIABLES LIKE '%lowercasetable_names%' 输出结果: ?...其中 0:区分大小写,1:不区分大小写 解决办法 在mysql的配置文件中添加 lowercasetable_names=1 实际解决方式 先查找mysql使用的配置文件 添加配置 重启mysql 查看是否生效...order of preference, my.cnf, $MYSQL_TCP_PORT, /etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf...datadir=/work1/soft/mysql/data socket=/work1/soft/mysql/mysql.sock #设置忽略大小写(简单来说就是sql语句是否严格),默认库名表名保存为小写..., 不区分大小写 lower_case_table_names=1 # 开启ip绑定 #bind-address = 0.0.0.0 [mysqld_safe] log-error=/var/log/mysqld.log
: 于是怀疑Mysql的问题。...做个实验:直接使用客户端用sql查询数据库。 发现的确是大小不敏感 。 通过查询资料发现需要设置collate(校对) 。 ...当字符设置为不区分大小写时的解决办法: 1.可以将查询条件用binary()括起来。 ...: mysql查询默认是不区分大小写的 如: select * from some_table where str=‘lingyejun'; select * from some_table where...str='LINGYEJUN'; 得到的结果是一样的,如果我们需要进行区分的话可以按照如下方法来做: 第一种方法: 要让mysql查询区分大小写,可以: select * from some_table
在Linux系统上使用MySQL,MySQL是区分字母大小写的,例如建A表时表名是大写的A,修改A表时脚本里写的a,就会报错表a不存在。...在MySQL中,数据库对应数据目录中的目录,数据库中的每个表至少对应数据库目录中的一个文件或多个文件,所以,是否区分大小写是其所在的操作系统决定的。...在大多数基于Unix的系统中,MySQL是区分大小写的;而在Windows系统中,MySQL是不区分大小写的。...0表示使用指定的大小写字母在硬盘上保存表名和数据库名,并且区分字母大小写;1表示表名在硬盘上以小写保存,MySQL将所有表名转换为小写在存储和查找表上,不区分字母大小写;2表示表名和数据库名在硬盘上使用指定的大小写字母进行保存...,但MySQL将它们转换为小写在查找表上,不区分字母大小写。
今天同步碰到一个问题,在浏览器地址栏中输入URL地址时,必须要区分大小写才能正常访问页面,网站服务器是Linux+Apache 造成此现象主要原因是缺少speling模块,因此只要在相应的系统里加载就可以了...添加如下一行: LoadModule speling_module modules/mod_speling.so CheckSpelling on 保存修改,退出 重启下Apache,再次输入URL,这次不区分大小写也可正常访问了
需求说明: 有时候,我们需要从数据库中模糊查询,但是字母有大写也有小写。 1:在执行查询的时候,需要忽略大小写。 2:以输入字母开头进行查询的 创建表: ? 请点击此处输入图片描述 ?...数据库脚本: CREATE TABLE `base_new_info_abbreviation` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar...解决需求一,忽略大小写的。可以先查询大写,在查询小写。然后union 下 先查询出所有小写字母d开头的: ? 请点击此处输入图片描述 ? 在查询出所有大写字母D开头的 ? 请点击此处输入图片描述 ?...解决需求二:以输入字母开头进行模糊查询 在上面语句中我们可以看到使用的是‘d%’或者是'D%'这样看上去好像有点不是很好。...综上要想解决并优化实现查询 D或者d开头的可以使用到以下三个函数: 函数一:upper(keyword )。大写函数 函数二:lower(keyword )。
SQL Server不区分大小写的问题 默认情况下,SQL Server不区分大小写,如果数据表TEST的TNAME列中有数据“abcd”和“Abcd”, 如果使用查询语句:select * from...可以通过设置排序规使其区分大小写,可以分别在创建数据库、修改数据库、创建表的字符型列(char\varchar\nchar \nvarchar等)时指定排序规则来实现。...如 create database test COLLATE Chinese_PRC_CS_AS --这样创建的数据库中区分大小写 alter database test COLLATE Chinese_PRC_CS_AS... --修改后的数据库中区分大小写 Create table test(tid int primary key,tname varchar(20) COLLATE Chinese_PRC_CS_AS...) --这样创建的tname列在使用SELECT 语句时就可以区分大小写了。
1、要求查询中要区分大小写 比如:select * from demo_users where u_name = ‘Joyous’ 这样会查询出来u_name = Joyous和u_name = joyous...俩个,怎么才能区分大小写呢?...Joyous’) 或者 select * from demo_users where binary u_name = ‘Joyous’ binary这不是一个函数,而是将字符串进行二进制比较,这样就能区分大小写了
oracle中查询默认是区分大小写的,但是在mysql中默认不区分大小写。 解决办法: mysql可以在SQL语句中加入 binary来区分大小写。...BINARY不是函数,是类型转换运算符,它用来强制它后面的字符串为一个二进制字符串,可以理解为在字符串比较的时候区分大小写。...binary } ALTER TABLE t_order CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin; 执行完上面的sql后,对该表的查询就能区分大小写了
一、实例介绍 SQL语句大小写到底是否区分呢?...我们可以再这样,看下面的例子: 例: --不区分大小写 ALTER DATABASE databasename collate Chinese_PRC_CI_AS --区分大小写...ALTER DATABASE databasename collate Chinese_PRC_CS_AS 批量修改数据库中所有表内字段大小写敏感 如: DECLARE @collate nvarchar...排序规则的后半部份(即后缀)含义: _BIN 二进制排序_CI(CS) 是否区分大小写:CI不区分,CS区分 _AI(AS) 是否区分重音:AI不区分,AS区分 _KI(KS) 是否区分假名类型:...KI不区分,KS区分 _WI(WS) 是否区分宽度:WI不区分,WS区分 三、整体介绍 在安装SQL时,我们可以选择区分大小写或安装完以后重建mastar,再选择区分大小 下面是rebuildm.exe
: Table 'zup.Domain_System' doesn't exist] with root cause 解决问题 首先可以肯定我数据库中是存在这个表的,只是全是小写的,而SpringBoot...在mysql 5.7.x版本中默认是大小写区分的。...可以登录mysql之后查看show variables like "%case%";: lower_case_table_names=0,默认为0,则区分大小写 truedei@truedei:/...[(none)]> 所以解决方法就是修改mysql中的配置文件,让其忽略大小写: 因为我使用的是docker安装的mysql5.7,并且把配置文件映射到 了:/data/mysql/conf/my.conf...[(none)]> 就可以解决此问题
默认情况下,库表名在 Windows 系统下是不区分大小写的,而在 Linux 系统下是区分大小写的。列名,索引名,存储过程、函数及事件名称在任何操作系统下都不区分大小写,列别名也不区分大小写。...Linux 系统下默认为 0 即区分大小写,我们来看下 lower_case_table_names 为 0 时数据库的具体表现: # 查看参数设置 mysql> show variables like...通过以上实验我们发现 lower_case_table_names 参数设为 0 时,MySQL 库表名是严格区分大小写的,而且表别名同样区分大小写但列名不区分大小写,查询时也需要严格按照大小写来书写...也可以将 lower_case_table_names 设为 1 来解决此问题,我们来看下此参数为 1 时的情况: # 将上述测试库删除 并将 lower_case_table_names 改为 1 然后重启数据库...库表大小写问题,相信你看了这篇文章后,应该明白为什么库表名建议使用小写英文了。
00 简单回顾 之前写过一篇关于mysql 对表大小写敏感的问题(你有遇到过MySQL因大小写敏感导致的问题吗),其实在mysql中字段存储的内容是不区分大小写的,本篇进行简单的总结。...想回顾一下: MySQL在Linux下数据库名、表名、列名、别名大小写规则是这样的: 1、数据库名与表名是严格区分大小写的; 2、表的别名是严格区分大小写的; 3、列名与列的别名在所有的情况下均是忽略大小写的...02 解决方案 因为默认情况下字段内容是不区分大小写的,也即大小写不敏感。所以解决方案就是要新增字段内容的校验规则。 使用mysql 的BINARY 关键字使搜索区分大小写。...通过上一篇和这一篇的内容,详细大家对mysql对大小写敏感的问题也有一定的认识了,在实际的开发中,库和表名最好使用小写字母,注意字段存储内容的大写问题。...并且让本地开发环境mysql的配置和服务器上mysql的配置保持一致,这样防止因为环境不一致而出现一些诡异问题。 你在开发中有没有遇到一些诡异的问题呢?欢迎留言分享。
默认安装的mysql无法远程连接是因为MySQL默认配置了不支持远程连接引起的。 解决方法: 一、本地主机上登录root用户 找到mysql.exe所在路径,shift+右键,在当前窗口打开命令行。...执行命令: mysql -uroot -proot Enter password: 成功连接mysql以后,执行以下sql语句查看user库情况: use mysql; select host from...’ (10061) 错误原因: mysqld数据库服务没有启动。...解决办法: 检查 :在windows 的任务管理器,或者 unix/linux 下 ps -aux | grep mysql 看一下。确认服务已经启动。...处理 :启动mysqld 服务 错误三: 防火墙开启了 解决方法: 防火墙需要允许3306端口连接。
《Oracle中大小写敏感的问题》这篇文章介绍了Oracle数据库中对大小写的敏感问题。...MySQL中的数据库对应到操作系统上存储的数据文件,因此像数据库名、表名、触发器名称等,是否大小写敏感就取决于他所在的操作系统。...(2) lower_case_table_names = 1(Windows默认) 表名存储在磁盘是小写的,但是比较的时候是不区分大小写。...因此为了避免这种迁移过程中大小写敏感的问题,有两个选择, 1....重新加载数据库, mysql < db1.sql mysql < db2.sql ... 大小写敏感的问题看着很小,但若不注意,尤其存在跨平台的需求,就会更加复杂。
在thinkphp查询后台数据库时候,当我们的数据库字段命名中含有大写字母时,默认框架会将大写的字段名全部转换为小写,就很有可能导致我们在对查询数据进行处理的时候出现变量获取值为NULL或空的情况 解决方法
一、问题 ①java代码没有颜色区分,统一黑色 ②代码不会联想提示,原来打前几个字母便会联想到后面的内容 二、解决 打开File,将Power save Mode的勾勾去掉
问题描述: 一开发同事在linux下调一个程序老是报错说找不到表,但是登陆mysql,show tables查看明明是已经创建了这张表的!!...解决办法: 1)先在my.cnf里将lower_case_table_names参数再次调整为0,改成区分大小写 2)然后mysqladmin -uroot -p shutdown 以安全模式关闭数据库...下数据库名、表名、列名、别名大小写规则是这样的: 1)数据库名与表名是严格区分大小写的; 2)表的别名是严格区分大小写的; 3)列名与列的别名在所有的情况下均是忽略大小写的; 4)变量名也是严格区分大小写的...; 5)MySQL在Windows下都不区分大小写,但是在Linux下默认是区分大小写的。...修改mysql为不区分大小写设置: [root@test-huanqiu ~]# mysqladmin -uroot -p shutdown //以安全模式关闭数据库 [root@test-huanqiu
而Windows下的MySQL却是大小写不敏感的,所有表名和数据库名都会变成小写。...对于怎么启用或者停用MySQL数据库的大小写敏感,这个网上随便都能找到,就是改改参数lower_case_table_names,然后重启即可。...但是,如果我们的数据库中已经有了多个区分大小写的数据库,现在要改为不区分大小写的,那么就会报错:Table 'databasenamexxx.tablenamexxx' doesn't exist....为此,我们需要将MySQL改为大小写敏感的模式,然后去重命名每个表名和数据库名。...一个一个的数据库去这么做,然后再把MySQL的参数改为大小写不敏感,这样才能正常使用。
领取专属 10元无门槛券
手把手带您无忧上云