前不久,对mysql的lower_case_table_names参数有点小小的疑问: 1.lower_case_table_names是表名忽略大小写还是所有对象(字段.索引等)都忽略大小写? 2.区分大小写环境里的表(含大写.小写)迁移到不区分大小写环境里面会怎么样? 3.不区分大小写环境里的表(含用大写.小写表名语句建的表)迁移到区分大小写环境里面又会怎样 4.lower_case_table _names设置为什么值较好? 于是做了针对这些问题做了个小小的实验,先附实验结论. 实验结论:…
最近公司项目的MySQL数据库要迁移到linux下,部署时日志总是显示报找不到一个表,用MYSQL查看明明有这个表.后来经百度,原来LINUX下的MYSQL默认是区分表名大小写的. 用命令查看当前是否区分大小写: ***************************************mysql> show variables like "%case%"; +------------------------+-------+| Variable_name          …
问题描述:一开发同事在linux下调一个程序老是报错说找不到表,但是登陆mysql,show tables查看明明是已经创建了这张表的!!如下: mysql> show tables; +-------------------------------------------+ | Tables_in_huan_db | +-------------------------------------------+ | advertisement | | message_queue | | messa…
[障碍再现] 状况描述01:     在LINUX下调一个程序经常报出找不到表,但是我明明是建了表的,     测试的时候,遇到一些问题,从Windows平台访问虚拟机中的Web应用,经常报出找不到表,但自己明明在数据库中看到相关的数据表和数据,在linux中通过MYSQL的命令行下也可以查到,为什么从Windows平台上的程序来访问虚拟机中的MySql时,就找不到呢?   [原因分析]     原来是LINUX下的MYSQL默认是要区分表名大小写的,而在windows下是不区分.     从w…
linux下mysql默认是要区分表名大小写的.mysql是否区分大小写设置是由参数lower_case_table_names决定的,其中:1)lower_case_table_names = 0 区分大小写(即对大小写不敏感),默认是这种设置.这样设置后,在mysql里创建的表名带不带大写字母都没有影响,都可以正常读出和被引用. 2)lower_case_table_names = 1 不区分大小写(即对大小写敏感).这样设置后,表名在硬盘上以小写保存,MySQL将所有表名转换为小写存储和查…
首先查看mysql是否区分大小写: 今天郁闷死了,在LINUX下调一个程序老说找不到表,但是我明明是建了表的,在MYSQL的命令行下也可以查到,为什么程序就找不到表呢? 后来请教了一个老师才搞定,原来是LINUX下的MYSQL默认是要区分表名大小写的,哎,弄了那么旧,害死我了. 让MYSQL不区分表名大小写的方法其实很简单: 1.用ROOT登录,修改/etc/my.cnf 2.在[mysqld]下加入一行:lower_case_table_names=1 3.重新启动数据库即可 今天测试的时候,…
在Unix中使用lower_case_tables_name=0,在Windows中使用lower_case_tables_name=2.这样了可以保留数据库名和表名的大小写.不利之处是必须确保在Windows中查询总是用正确大小写引用数据库名和表名.如果将查询转移到Unix中,由于在Unix中大小写很重要,如果大小写不正确,它们不工作.例外:如果你正使用InnoDB表,在任何平台上均应将lower_case_tables_name设置为1,以强制将名转换为小写.请注意在Unix中将lower_…
Mac 终端在使用 tab 补全命令时默认大小写敏感,通过以下设置方法可以忽略大小写,方法同样适用于 iTerm2. 打开终端输入以下命令: nano .inputrc 将以下命令复制进去: set completion-ignore-case on set show-all-if-ambiguous on TAB: menu-complete 然后按下 control + O 之后回车保存,重启终端即可(注意是 control 不是 command). 终端重启后,就会发现已经忽略大小写了.…
1.参数说明: lower_case_table_names=0 表名存储为给定的大小和比较是区分大小写的 lower_case_table_names = 1 表名存储在磁盘是小写的,但是比较的时候是不区分大小写 lower_case_table_names=2 表名存储为给定的大小写但是比较的时候是小写的 unix,linux下lower_case_table_names默认值为 0 .Windows下默认值是 1 .Mac OS X下默认值是 2 2.查看方法:# 进入mysql命令行 执…
安装完数据库,建表查询发现表不存在,原来是表名大小写写错了,原来Linux下的MySQL默认是区分表名大小写的,这样的话对变成灰带来很大的不变,如何才能使mysql表名不区分大小写呢? 通过如下设置,可以让MySQL不区分表名大小写: 1.用root登录,修改 /etc/my.cnf: 2.在[mysqld]节点下,加入一行: lower_case_table_names=1 3.重启MySQL即可:…