# MySQL 配置使其不区分大小写 MySQL默认是区分大小写的,这意味着,例如用SELECT查询时,数据库将返回大小写不同但实际上相同的值。在这篇文章中,我们将讨论如何配置MySQL以进行大小写敏感操作。 ## 查看默认设置 查看MySQL的默认设置是多么有用,因为它使我们了解MySQL的当前状态,并可以帮助我们更好地理解如何进行配置。 要查看MySQL的默认设置,可以通过以下步骤: 1. 在命令行中登录MySQL(例如通过命令 `mysql -u root -p`)。 2. 在MySQL命令行中输入 ```sql SHOW VARIABLES LIKE 'lower_case_%'; ``` 这将返回如下输出: ```bash +------------------------+-------+ | Variable_name | Value | +------------------------+-------+ | lower_case_file_system | OFF | | lower_case_table_names | 0 | +------------------------+-------+ ``` 这里我们看到**lower_case_table_names**的值为0,表示MySQL区分大小写。 > 系统变量lower_case_table_names有三个值:分别是0、1、2. > 1. 设置成0:表名按你写的SQL大小写存储,大写就大写小写就小写,比较时大小写敏感。 > 例如:代码里访问select * from ACT_EVT_LOG;执行的时候就是访问ACT_EVT_LOG这张表。 > 代码里访问select * from act_evt_log;执行的时候就是访问act_evt_log这张表。 > 2. 设置成1:表名转小写后存储到硬盘,比较时大小写不敏感。 > 例如:代码里访问select * from ACT_EVT_LOG;或者select * from act_evt_log;执行的时候都是访问act_evt_log这张表。 > 3. 设置成2:表名按你写的SQL大小写存储,大写就大写小写就小写,比较时统一转小写比较。 > 例如:代码里访问select * from ACT_EVT_LOG;执行的时候就是访问act_evt_log这张表。 ## 修改配置文件 要使MySQL不区分大小写,可以通过修改MySQL的配置文件来实现。MySQL的配置文件位于my.cnf或my.ini文件中,这取决于你的操作系统。 要修改配置文件,可以按照以下步骤操作: 1. 找到你的my.cnf或my.ini文件,具体位置和名称取决于你的操作系统和MySQL版本。通常情况下,在Linux上,my.cnf文件位于/etc目录下,而在Windows上,my.ini文件位于MySQL的安装目录下。 2. 用文本编辑器打开my.cnf或my.ini文件,并在文件末尾添加以下内容: ```bash [mysqld] lower_case_table_names=1 ``` **lower_case_table_names=1**选项将使MySQL不区分大小写。 3. 保存此文件并退出文本编辑器。 4. 重新启动MySQL服务器以使更改生效。 ## 检查新设置是否生效 为了检查新设置是否生效,我们可以重复上一节中的步骤,但现在我们应该看到MySQL返回以下输出: ```bash +------------------------+-------+ | Variable_name | Value | +------------------------+-------+ | lower_case_file_system | OFF | | lower_case_table_names | 1 | +------------------------+-------+ ``` 此时,我们可以在MySQL中尝试查询大小写敏感的数据。例如,我们可能有两个用户,一个名为“JohnDoe”,一个名为”johndoe”,我们可以尝试使用以下查询语句来查找特定的用户: ```sql SELECT * FROM users WHERE username='johndoe'; ``` 此时将只返回用户名为“johndoe”的用户信息,而不是同时返回“johndoe”和“JohnDoe”的信息。 ## 参考 - https://zhuanlan.zhihu.com/p/606877902