默认情况下,表别名在Unix上区分大小写,但在Windows或macOS上不是这样。以下语句在Unix上不起作用,因为它引用别名as a和as A:

mysql> SELECT col_name FROM tbl_name AS a
-> WHERE a.col_name = 1 OR A.col_name = 2;

但是,Windows上允许使用相同的语句。为避免此类差异导致的问题,最好采用一致的约定,例如始终使用小写名称创建和引用数据库和表。建议使用此约定,以实现最大的便携性和易用性。

表和数据库名称如何存储在磁盘上并在 MySQL 中使用受 lower_case_table_names 系统变量的影响,您可以在启动 mysqld 时设置该 变量 。 lower_case_table_names 可以采用下表中显示的值。这个变量不不影响触发标识符的情况下的灵敏度。在Unix上,默认值为 lower_case_table_names 为 0 ,在 Windows 上,默认值为 1,在 macOS 上,默认值为 2 。


含义
0 表和数据库名称使用CREATE TABLEor CREATE DATABASE语句中指定的lettercase存储在磁盘上。名称比较区分大小写。你应该不会,如果你有不区分大小写的文件名(如Windows或Mac系统)的系统上运行MySQL这个变量设置为0。如果使用--lower-case-table-names=0 不区分大小写的文件系统强制此变量为0 并MyISAM使用不同的字母表访问 表名,则可能导致索引损坏。
1 表名以小写形式存储在磁盘上,名称比较不区分大小写。MySQL在存储和查找时将所有表名转换为小写。此行为也适用于数据库名称和表别名。
2 表和数据库名称使用CREATE TABLEor CREATE DATABASE语句中指定的lettercase存储在磁盘上,但MySQL在查找时将它们转换为小写。名称比较不区分大小写。这仅适用于不区分大小写的文件系统! InnoDB表名和视图名以小写形式存储,如下所示 lower_case_table_names=1。

如果您只在一个平台上使用MySQL,则通常不必将lower_case_table_names变量从其默认值更改 。但是,如果要在文件系统区分大小写不同的平台之间传输表,则可能会遇到困难。例如,在Unix上,你可以有两个不同的表名为my_table和 MY_TABLE,但在Windows这两个名字都被认为是相同的。为避免数据库或表名字母的数据传输问题,您有两种选择:

lower_case_table_names=1 在所有系统上 使用。这样做的主要缺点是,当您使用 SHOW TABLES 或时 SHOW DATABASES,您看不到原始字母中的名称。

使用 lower_case_table_names=0 在 Unix 和 lower_case_table_names=2Windows 上。这样可以保留数据库和表名的字母大小写。这样做的缺点是您必须确保您的语句始终在 Windows 上使用正确的字母大小引用您的数据库和表名。如果将语句转移到 Unix,那么 lettercase 很重要,如果 lettercase 不正确,它们就不起作用。

  • 例外:如果您正在使用 InnoDB 表并且您试图避免这些数据传输问题,则应 lower_case_table_names 在所有平台上将其设置为 1 以强制将名称转换为小写。

如果您计划lower_case_table_names在Unix上将系统变量设置 为1,则必须先将旧数据库和表名转换为小写,然后再停止 mysqld并使用新变量设置重新启动它。要对单个表执行此操作,请使用 RENAME TABLE:

windows下mysql区分大小写敏感问题的更多相关文章

  1. 【已解决】Windows下 MySQL大小写敏感 解决方案及分析

    Windows下 MySQL大小写敏感配置 zoerywzhou@163.com http://www.cnblogs.com/swje/ 作者:Zhouwan 2017-3-27 最近在window ...

  2. MySQL 5.7 Command Line Client输入密码后闪退和windows下mysql忘记root密码的解决办法

    MySQL 5.7 Command Line Client输入密码后闪退的问题: 问题分析: 1.查看mysql command line client默认执行的一些参数.方法:开始->所有程序 ...

  3. coreseek实战(二):windows下mysql数据源部分配置说明

    coreseek实战(二):windows下mysql数据源部分配置说明 关于coreseek在windows使用mysql数据源的配置,以及中文分词的详细说明,请参考官方文档: mysql数据源配置 ...

  4. Windows下mysql自动备份的最佳方案

    网上有很多关于window下Mysql自动备份的方法,其实不乏一些不好的地方和问题,现总结出一个最好的方法供大家参考: 新建一个记事本,然后重命名为: mysql_backup.bat 然后单击右键选 ...

  5. Windows下mysql忘记密码的解决方法

    Windows下mysql忘记密码的解决方法 mysql5.0 http://www.jb51.net/article/21984.htm方法一: 1.在DOS窗口下输入 net stop mysql ...

  6. Windows下MYSQL自动备份批处理

    windows下MYSQL自动备份批处理 2011-05-04 09:16:45|  分类: mysql|举报|字号 订阅     按系统时间进行备份 注意mysql安装路径中如果有空格.就要把,.b ...

  7. windows下mysql和linux下mysql主从配置

    1. linux下mysql安装版本5.6   windows下mysql版本5.7  不要问我为什么版本不一致  就是想这么搞 2. linux为主服务器   windows为从服务器 3.找到li ...

  8. Windows 下 MySql 5.7.20安装及data和my.ini文件的配置(转)

    Windows 下 MySql 5.7.20安装及data和my.ini文件的配置     本文通过图文并茂的形式给大家介绍了MySql 5.7.20安装及data和my.ini文件的配置方法. my ...

  9. windows下mysql配置

    windows下mysql配置   忙活了大半天,总算配置好了,本文献给windows下没试用过Mysql的小白,勿喷 http://blog.csdn.net/z1074907546/article ...

随机推荐

  1. 纯C实现面向对象

    #include <stdio.h> #include <stdlib.h> //接口 #ifndef Interface #define Interface struct # ...

  2. CSS3 transform变换

    CSS3 transform变换 1.translate(x,y) 设置盒子位移2.scale(x,y) 设置盒子缩放3.rotate(deg) 设置盒子旋转4.skew(x-angle,y-angl ...

  3. RabbitMQ搭建

    1. RabbitMQ简介 RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议 2.安装与部署 RabbitMQ的安装依赖E ...

  4. 手机SD卡损坏补救措施

    现在的应用程序越来越重,比如微信.来往之类的,稍微用一段时间,就会占用几十MB甚至上百MB的空间.而有时候甚至手机会出现"无响应"的现象,需要你选择"继续等待" ...

  5. 普通用户 crontab 任务不运行

    今天发如今linux下,普通用户的crontab任务不运行.网上搜了好多.好多说要在运行的脚本前面加上例如以下内容 if [ -f ~/.bash_profile ]; then   . ~/.bas ...

  6. cocos2d-x 重力感应 加速器的使用

    CSDN开通已有两三年,今天作为一名刚入行的菜鸟写下自己的第一篇Blog. 刚好项目中须要用到重力感应,google下发现重力感应的使用很easy. 例如以下: 第一步: 在当前层开启重力感应.函数: ...

  7. bjxdpkdzvaciu

    xufutwovrcgwcdjrmkmsmoiemsgsfk

  8. 【方法1】删除Map中Value反复的记录,而且仅仅保留Key最小的那条记录

    介绍 晚上无聊的时候,我做了一个測试题,測试题的大体意思是:删除Map中Value反复的记录,而且仅仅保留Key最小的那条记录. 比如: I have a map with duplicate val ...

  9. C# 获取当前路径方法(转)

    C# 获取当前路径方法 //获取包含清单的已加载文件的路径或 UNC 位置. public static string sApplicationPath = Assembly.GetExecuting ...

  10. springboot学习(五) 全局异常处理

    创建全局异常处理 /** * 全局异常配置管理 */ @ControllerAdvice public class GlobalExceptionConfig extends ResponseEnti ...