Windows下安装的Mysql默认是不区分大小写的,而Linux下安装的Mysql默认是区分大小的,包括对数据库名、表名、表的的别名和变量名区分大小写,而对列名和列的别名不区分大小写。下面针对这种情况进行验证并作出相应的解决方法。
1、验证Linux下Mysql默认情况
现在mysql中有一个数据库为mytest,它有一个数据表user(name,sex),表中存放有一条数据。以下分别对数据库名,表名,表的别名,列名进行大小写区别验证。
a.默认对数据库名区分大小写
由于建立的数据库为全部小写mytest,当大小写混合输入use myTEST时,提示未知数据库,即查找不到对应的数据库名,而小写输入use mytest时,查找正常,因此可以说明默认对数据库名区分大小写。
b.默认对表名区分大小写
当查询时用表名的大写USER,提示表名不存在,而当用小写user时查询正常,可以说明默认对数据表区分大小写。
c.默认对表的别名区分大小写
用t作为表user的别名,当查询列“name”的值用大写的T时提示未知列名,而用小写t时查询正常,可以说明默认对表的别名区分大小写。
d.对列名不区分大小写
由上面可以看出,不管列名用大写NAME还是用小写name,都可以正常查询,可以说明对列名不区分大小写。
2、解决方法
a.用root账号登陆Linux系统,在/etc/my.cnf文件中的[mysqld]后添加lower_case_table_names=1,如下:
保存并退出。
b.重启数据库
经过上面的操作,就可以令mysql忽略对大小写的敏感。
注意:
①lower_case_table_names 设置为0,表示区分大小写;lower_case_table_names 设置为1,,表示忽略大小写,创建的数据库,表都是以小写形式存放在磁盘上,对于sql语句都是转换为小写对表和DB进行查找;
②当设置了lower_case_table_names = 1时,需要先将原来的数据库名和表名转换为小写,再重启数据库实例,否则就会出现数据库名和表名不存在的情况,所以要想忽略大小写,还需要提前将大写数据库名和表名更改为小写,否则会报错,另外数据库名无法rename可以新建一个小写的数据库名;
③如果在/etc或/etc/mysql下没有找到my.cnf的话,需要从其它地方拷贝过来,这是因为使用rpm方式安装时,默认是没有在/etc或/etc/mysql目录下生成my.cnf的,我们可以在/usr/share/mysql/下找到*.cnf文件,拷贝其中的一个放到/etc下并更名为my.cnf,然后再按上面的方法进行即可。
3、验证是否修改成功
a.验证数据库名:
由以上看出,已忽略对数据库名大小写的区分。
b.验证表名:
由以上看出,已忽略对表名大小写的区分。
c.验证表的别名:
由以上看出,已忽略对表的别名大小写的区分。
至此,关于linux中mysql默认对大小写区分的解决方法已完成。
相关推荐
尽管列名在大多数情况下不区分大小写,但如果你想在查询时区分字段值的大小写,可以对字段设置BINARY属性。BINARY属性确保比较时考虑字符的ASCII值,而不是忽略大小写。有三种方式可以设置BINARY属性: A. 创建表时...
本文将详细介绍MySQL 8.0中关于大小写敏感性的变化及其背后的机制,并提供相应的解决方案。 #### 二、问题背景 在MySQL 8.0之前,`lower_case_table_names` 参数控制着数据库和表名的大小写敏感性。此参数默认情况...
通过对SQL Server和MySQL中区分大小写的设置进行深入了解,我们可以更好地根据实际需求调整数据库的行为。无论是创建表时指定字段属性、查询时动态控制还是更改现有表的设置,这些方法都为我们提供了灵活的手段来...
此外,在 mysql table editor 中也可以直接勾选 BINARY 项,以便区分大小写。 MySQL 的 SQL 语句大小写不敏感问题是一个需要注意的问题,通过设置表名的大小写规则和字段的 BINARY 属性,可以解决这个问题。
MySQL 在 Linux 下默认情况下是严格区分表名和数据库名的大小写,而在 Windows 下则不区分大小写。 在 Linux 下,MySQL 的默认设置是区分表名的大小写,不区分列名的大小写。可以通过添加 lower_case_table_names=...
此外,尽管设置为1可以使MySQL在逻辑上不区分大小写,但为了保持一致性,建议在定义表名和编写SQL语句时始终使用小写,避免因大小写问题引起不必要的困扰。 在开发过程中,特别是涉及跨平台的应用,了解并适当地...
2. **Linux环境**:而在Linux环境下,默认情况下MySQL严格区分大小写,这意味着在创建表或引用表时必须确保名称完全匹配(包括大小写)。 这种行为差异往往会成为从Windows环境迁移到Linux环境时的一个常见陷阱。 ...
在Linux系统中,默认情况下,MySQL是严格区分大小写的,这与Windows环境下的行为形成鲜明对比,后者默认不区分大小写。本文将深入探讨如何在Linux下通过修改MySQL配置,使查询操作中表名的大小写变得不敏感。 ### ...
在标题和描述中提到的方法就是用来调整MySQL服务器的这一行为,使其变为区分大小写。 首先,我们要理解`lower_case_table_names`这个配置选项。它是MySQL中一个关键的系统变量,用于定义数据库、表和列名的处理方式...
在本文中,我们将探讨如何在Windows和Linux操作系统上设置MySQL使其不区分大小写。 首先,我们要了解`lower_case_table_names`这个配置选项。这是一个用于控制MySQL服务器如何处理表名和数据库名大小写的参数。当`...
假设在一个区分大小写的Linux系统上,如果使用以下命令创建了一个名为`User`的表: ```sql CREATE TABLE User ( id INT PRIMARY KEY, name VARCHAR(50) ); ``` 在默认情况下(`lower_case_table_names = 1`),...
1. `lower_case_table_names = 0`:在这种模式下,MySQL区分大小写。表名在数据库中以用户输入的大小写形式存储,并在查询时保持大小写敏感。这是默认设置。 2. `lower_case_table_names = 1`:在这个配置下,MySQL...
- **不区分表名大小写**:在`[mysqld]`段落中添加`lower_case_table_names = 1`。 #### 八、设置字符集 为了支持中文,需要将MySQL的默认编码修改为`gbk`或`utf8`: 1. **中止MySQL服务**: ```bash bin/...
在大多数Unix系统中,包括Linux,文件系统通常是大小写敏感的,因此MySQL也会对数据库名和表名区分大小写。然而,在Windows系统中,文件系统通常是大小写不敏感的,MySQL在这种情况下也不会区分数据库和表名的大小写...
- 表名不区分大小写:`lower_case_table_names=1` 6. **服务控制**: - 启动MySQL服务:`# service mysqld start` - 查看MySQL服务状态:`# service mysqld status` - 停止MySQL服务:`# service mysqld stop` ...
说明: MySQL 在 Windows 下不区分大小写,但在 Linux 下默认是区分大小写。因此,数据库名、 表名、字段名,都不允许出现任何大写字母,避免节外生枝。 正例: aliyun _ admin , rdc _ config , level 3_
最后,我们可以使用以下命令来使 MYSQL 不区分大小写: `mysql -uroot -p -e "SHOW VARIABLES LIKE 'lower_case_table_names'"` 本文详细介绍了 LINUX 下 MYSQL 的安装和卸载过程。通过这篇文章,读者可以轻松地...