linux my.cnf中配置

[mysqld]
lower_case_table_names = 1

在 MySQL 中,默认情况下表名是区分大小写的。不过,可以通过配置 MySQL 的服务器选项来改变这一行为,使表名大小写不敏感。

修改 MySQL 配置文件

要让 MySQL 表名大小写不敏感,您需要修改 MySQL 的配置文件 my.cnfmy.ini(取决于操作系统)。这些配置文件通常位于以下路径之一:

  • Linux: /etc/mysql/my.cnf/etc/my.cnf
  • Windows: C:\ProgramData\MySQL\MySQL Server 8.0\my.ini

您需要编辑 [mysqld] 部分,添加或修改以下配置项:

  1. lower_case_table_names:设置此选项为 1 可以使表名在 Windows 上大小写不敏感;设置为 2 可以使表名在 Linux 上大小写不敏感。
示例配置

打开 my.cnfmy.ini 文件,并添加或修改以下内容:

[mysqld]
lower_case_table_names=1  # Windows 上使表名大小写不敏感
# lower_case_table_names=2  # Linux 上使表名大小写不敏感

各平台的具体设置

  • Windows:设置 lower_case_table_names1
  • Linux:设置 lower_case_table_names2
注意事项
  • 重启 MySQL 服务器:修改配置文件后,需要重启 MySQL 服务器以使更改生效。
  • 现有表名:如果现有表名已经创建,更改此设置后,表名仍然会保留原来的大小写。新的表名将遵循新的大小写规则。

重启 MySQL 服务器

在修改配置文件后,您需要重启 MySQL 服务器。具体步骤取决于您的操作系统:

Linux
  1. 使用 systemctl 重启 MySQL 服务:
sudo systemctl restart mysqld
Windows
  1. 打开“服务”管理工具。
  2. 找到 MySQL 服务并右击,选择“重启”。

验证设置

您可以使用以下 SQL 查询来验证 lower_case_table_names 的设置是否生效:

SHOW VARIABLES LIKE 'lower_case_table_names';

输出应该是:

+-------------------------+-------+
| Variable_name           | Value |
+-------------------------+-------+
| lower_case_table_names  | 1     |  -- 或者 2
+-------------------------+-------+

创建和使用表

一旦配置生效,您可以创建表并测试大小写不敏感的功能:

创建表
CREATE TABLE TestTable (
    id INT PRIMARY KEY
);
大小写不敏感的测试

尝试使用不同的大小写来访问表:

SELECT * FROM testtable;  -- 应该能够正常工作
SELECT * FROM TESTTABLE;  -- 应该能够正常工作
SELECT * FROM TestTable;  -- 应该能够正常工作

注意事项

  • 跨平台一致性:如果您需要在多个平台上保持表名的一致性,确保在所有平台上设置相同的 lower_case_table_names 值。
  • 现有数据库:更改此设置后,现有数据库中的表名仍然保持原来的大小写。新的表名将遵循新的大小写规则。
  • 安全性:在某些情况下,表名区分大小写有助于防止潜在的安全问题。例如,在使用动态 SQL 时,恶意用户可能会利用大小写差异来执行意外的操作。因此,在设置 lower_case_table_names 时要谨慎。