前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >细说MySQL区分字母大小写

细说MySQL区分字母大小写

作者头像
JavaQ
发布2018-04-04 17:00:03
2.5K0
发布2018-04-04 17:00:03
举报
文章被收录于专栏:JavaQJavaQ

在Linux系统上使用MySQL,MySQL是区分字母大小写的,例如建A表时表名是大写的A,修改A表时脚本里写的a,就会报错表a不存在。在MySQL中,数据库对应数据目录中的目录,数据库中的每个表至少对应数据库目录中的一个文件或多个文件,所以,是否区分大小写是其所在的操作系统决定的。在大多数基于Unix的系统中,MySQL是区分大小写的;而在Windows系统中,MySQL是不区分大小写的。

操作系统中提供了lower_case_table_names参数用于修改这种区分大小写的策略。默认情况下,Linux系统下lower_case_table_names=0,Windows系统下lower_case_table_names=1,而MacOS下lower_case_table_names=2。0表示使用指定的大小写字母在硬盘上保存表名和数据库名,并且区分字母大小写;1表示表名在硬盘上以小写保存,MySQL将所有表名转换为小写在存储和查找表上,不区分字母大小写;2表示表名和数据库名在硬盘上使用指定的大小写字母进行保存,但MySQL将它们转换为小写在查找表上,不区分字母大小写。

如果想在Linux系统中修改lower_case_table_names的值,让其不区分字母大小写,Google出来的操作步骤大部分都是下面这种:

1.以root登录系统

2.cd /etc/mysql/

3.sudo vim my.cnf

4.在[mysqld]后添加添加lower_case_table_names=1

5.重新启动数据库

然而,有些时候会出现一些特殊情况,例如,打开my.cnf发现里面并没有[mysqld],而是如下的内容:

!includedir /etc/mysql/conf.d/ !includedir /etc/mysql/mysql.conf.d/

这时候,如果直接在里面添加lower_case_table_names=1,则会导致无法和MySQL建立连接的错误产生。正确做法如下:

1.以root登录系统

2.cd /etc/mysql/

3.sudo vim my.cnf

如果发现my.cnf中没有“[mysqld]”,只有如下内容:

!includedir /etc/mysql/conf.d/ !includedir /etc/mysql/mysql.conf.d/

则,cd /etc/mysql/mysql.conf.d/

sudo vim mysqld.cnf

4.在[mysqld]后添加添加lower_case_table_names=1

5.重新启动数据库

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-10-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JavaQ 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档