需求描述:

  今天一个同事问,在mysql中,默认的表名是大小写区分的吗,默认是什么设置,

  如果要设置成大小写不区分的改怎么设置,是否需要进行重启.然后就进行了查询,

  对于lower_case_table_names进行了实验,对该参数的作用进行理解.

操作过程:

1.查看默认的lower_case_table_names

mysql> show variables like 'lower_case_table_names';
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| lower_case_table_names | 0 |
+------------------------+-------+
1 row in set (0.00 sec)

备注:该参数的默认值是0.

2.查看默认的情况,该参数对表名有什么影响

mysql> create database test05;
Query OK, 1 row affected (0.00 sec) mysql> use test05;
Database changed
mysql> create table tab01(id int); #以小写创建表
Query OK, 0 rows affected (0.05 sec) mysql> create table TAB01(id int); #以大写创建表
Query OK, 0 rows affected (0.04 sec) mysql> show tables; #通过show variables可以查看表名是通过指定的大小写进行存储,即区分大小写.
+------------------+
| Tables_in_test05 |
+------------------+
| TAB01            |
| tab01            |
+------------------+
2 rows in set (0.00 sec) mysql> system ls -l /mysql/data/test05 #查看操作系统表对应的文件,也是大小写区分的.
total 220
-rw-r----- 1 mysql mysql    61 Jun  5 15:37 db.opt
-rw-r----- 1 mysql mysql  8556 Jun  5 15:37 tab01.frm
-rw-r----- 1 mysql mysql  8556 Jun  5 15:37 TAB01.frm
-rw-r----- 1 mysql mysql 98304 Jun  5 15:37 tab01.ibd
-rw-r----- 1 mysql mysql 98304 Jun  5 15:37 TAB01.ibd mysql> insert into tab01 select 1; #插入的时候,可以分别向两张表中插入数据
Query OK, 1 row affected (0.02 sec)
Records: 1  Duplicates: 0  Warnings: 0 mysql> insert into TAB01 select 1;
Query OK, 1 row affected (0.00 sec)
Records: 1  Duplicates: 0  Warnings: 0 mysql> select * from tab01; #查询两张表有不同的值.
+------+
| id   |
+------+
|    1 |
+------+
1 row in set (0.00 sec) mysql> select * from TAB01;
+------+
| id   |
+------+
|    1 |
+------+
1 row in set (0.00 sec)

备注:在默认情况下,表名是以指定的方式进行存储的,即大小写区分.

2.将lower_case_table_names修改为1,重启实例

[root@testvm ~]# grep "lower" /etc/my.cnf
### table_name lower case
lower_case_table_names = 1

备注:由于lower_case_table_names是全局参数,并且是非动态的,只能在配置文件中配置,重启生效.

3.查看lower_case_table_names设置为1之后,对表名的影响

mysql> create database test05;
Query OK, 1 row affected (0.00 sec) mysql> use test05;
Database changed mysql> create table tab01(id int); #以小写的名字创建了表.
Query OK, 0 rows affected (0.05 sec) mysql> create table TAB01(id int); #以大写创建表名的时候,就报表存在了.
ERROR 1050 (42S01): Table 'tab01' already exists
mysql> show tables; #表名以小写存储
+------------------+
| Tables_in_test05 |
+------------------+
| tab01 |
+------------------+
1 row in set (0.00 sec) mysql> drop table tab01; #删除表,以大写名字创建表.
Query OK, 0 rows affected (0.08 sec) mysql> create table TAB01(id int);
Query OK, 0 rows affected (0.05 sec) mysql> show tables; #表名以小写存在
+------------------+
| Tables_in_test05 |
+------------------+
| tab01            |
+------------------+
1 row in set (0.00 sec)

备注:将lower_case_table_names设置为1的时候,表名是以小写存储的,在系统上也是小写的名字.

3.将lower_case_table_names设置为2,重启实例

[root@testvm data]# grep "lower" /etc/my.cnf
### table_name lower case
lower_case_table_names = 2

备注:将lower_case_table_names设置为2

4.查看设置为2之后的影响

mysql> drop database test05;
Query OK, 4 rows affected (0.11 sec) mysql> create database test05;
Query OK, 1 row affected (0.00 sec) mysql> use test05;
Database changed
mysql> create table tab01(id int);
Query OK, 0 rows affected (0.05 sec) mysql> create table TAB01(id int);
Query OK, 0 rows affected (0.08 sec) mysql> show tables;
+------------------+
| Tables_in_test05 |
+------------------+
| TAB01 |
| tab01 |
+------------------+
2 rows in set (0.00 sec) mysql> system ls -l /mysql/data/test05 #操作系统上文件的名字,以区分大小写的方式存储.
total 220
-rw-r----- 1 mysql mysql    61 Jun  5 16:36 db.opt
-rw-r----- 1 mysql mysql  8556 Jun  5 16:37 tab01.frm
-rw-r----- 1 mysql mysql  8556 Jun  5 16:37 TAB01.frm
-rw-r----- 1 mysql mysql 98304 Jun  5 16:37 tab01.ibd
-rw-r----- 1 mysql mysql 98304 Jun  5 16:37 TAB01.ibd

备注:设置为2之后,表名是以区分大小写的方式存储的.

文档创建时间:2018年6月5日16:38:40

mysql中参数low_case_table_name的使用?不同参数值的设置有什么影响?的更多相关文章

  1. mysql中参数--init-file的作用是什么呢?

    需求描述: 今天在修改测试环境mysql数据库中root用户密码的时候,用到了--init-file参数, 所以,就在这里说下该参数的作用. 概念解释: 参数:--init-file=file_nam ...

  2. MySql中LongText字段对应Hibernate映射文件的设置(转)

    <?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC     "-//Hibernate/Hi ...

  3. MySQL 配置参数优化

    MySQL 配置参数优化 1.修改back_log参数值:由默认的50修改为500 back_log=500back_log值指出在MySQL暂时停止回答新请求之前的短时间内多少个请求可以被存在堆栈中 ...

  4. MySQL中几种常见的日志

    前言: 在 MySQL 系统中,有着诸多不同类型的日志.各种日志都有着自己的用途,通过分析日志,我们可以优化数据库性能,排除故障,甚至能够还原数据.这些不同类型的日志有助于我们更清晰的了解数据库,在日 ...

  5. asp.net中的mysql传参数MySqlParameter

    注意在asp.net中传参 string sql="select name,id from user where id=@id"; //@idm不需要引号 MySqlParamet ...

  6. MySQL中binlog参数:binlog_rows_query_log_events-记录具体的SQL【转】

    在使用RBR也就是行格式的时候,去解析binlog,需要逆向才能分析出对应的原始SQL是什么,而且,里面对应的是每一条具体行变更的内容.当然,你可以开启general log,但如果我们需要的只是记录 ...

  7. MySQL中的sort_buffer_size参数大小的设置问题

    看到sort_buffer_size这个参数(connect级别的参数,MySQL5.7,默认值是1048576字节,也就是1MB)的默认值这么小,想着是不是可以调大一点,反正内存动不动几十个GB的, ...

  8. js获取url中参数名也参数值

    要撮利用js获取url中参数名也参数值这个不多见了,但我今天需要这样操作,下面我来给大家介绍一下具体的实例方法.   在已知参数名的情况下,获取参数值,使用正则表达式能很容易做到. js的实现方法如下 ...

  9. 【Mysql】了解Mysql中的启动参数和系统变量

    一.启动参数 在程序启动时指定的设置项也称之为启动选项(startup options),这些选项控制着程序启动后的行为. 1)在命令行上使用选项 启动服务器程序的命令行后边指定启动选项的通用格式就是 ...

随机推荐

  1. Django添加防跨站请求伪造中间件

    第一步: 在全局设置中打开此中间件: MIDDLEWARE_CLASSES = [ ... 'django.middleware.csrf.CsrfViewMiddleware', ... ]     ...

  2. css 可穿透

    pointer-events : none; 引自:http://www.thinkphp.cn/topic/4702.html

  3. Docker run 命令的使用方法

    [编者的话]在Docker中,run应该是用户使用最多的命令了,很多读者反馈不是很明白run命令的用法,而且相关的书籍.中文资料中对run命令的描述也不是非常完整,所以DockerOne组织翻译了Do ...

  4. php curl_multi系列函数实现多线程抓取网页

    最近几天在做一个多搜索引擎关键字排名查询工具,用于及时方便的了解关键词在各大搜索引擎的排名. 在抓取360搜索的时候,发现360搜索每页只支持显示10个搜索结果,如果想获取100个搜索结果数据,就得搜 ...

  5. Qt添加驱动——Qt数据库之添加MySQL驱动插件

    Qt数据库之添加MySQL驱动插件(1) 现在可用的数据库驱动只有3种,在Qt中,我们需要自己编译其他数据库驱动的代码,让它们以插件的形式来使用.下面我们就以现在比较流行的MySQL数据库为例,说明一 ...

  6. idea破解,idea激活,使用破解补丁无需注册码

    dea激活,JetBrain旗下软件激活 前言 idea激活有多种方式,网上较多的是使用注册码或者填License server网址,目前(2017年8月19日)使用注册码的方式,亲测可用的只有lan ...

  7. (笔记)Linux下的ioctl()函数详解

    我这里说的ioctl函数是指驱动程序里的,因为我不知道还有没有别的场合用到了它,所以就规定了我们讨论的范围.写这篇文章是因为我前一阵子被ioctl给搞混了,这几天才弄明白它,于是在这里清理一下头脑. ...

  8. C++多线程中调用python api函数

    错误场景:一直等待全局锁. 解决方法: 一.首先定义一个封装类,主要是保证PyGILState_Ensure, PyGILState_Release配对使用,而且这个类是可以嵌套使用的. #inclu ...

  9. 事件的监听是由awt完成的

    学swing 之前先学awt ,因为awt 是Java实现图形界面的基础. 它能够完成编写界面的基本功能,最重要的是,事件的监听是由awt完成的. 而swing是在awt基础上提供的新的界面工具包,它 ...

  10. 嵌入式开发之zynq---Zynq PS侧I2C驱动架构

    http://blog.chinaunix.net/uid-24148050-id-120532.html http://bbs.csdn.net/topics/390538368?page=1 ht ...