【问题标题】:How to solve Can't connect to MySQL server on 'localhost' (10061) when setting lower_case_table_names=0?如何解决设置lower_case_table_names = 0时无法连接到'localhost'(10061)上的MySQL服务器?
【发布时间】:2026-01-25 19:50:01
【问题描述】:

在 mysql 中创建表时,我注意到我的所有表名都以小写开头,即使我用大写命名它们也是如此。

我发现进入:

C:\ProgramData\MySQL\MySQL 服务器 8.0

打开 my.ini 文件并更改 lower_case_table_names=0

会根据this video 来解决问题。

完成上述操作后,我关闭了服务器,重新启动了电脑 并且在尝试再次启动服务器时出现以下错误:

无法连接,服务器可能没有运行。无法连接到 MySQL 'localhost' (10061) 上的服务器

当我改回lower_case_table_names=1

它再次工作。我该如何解决?

编辑:

我发现我可以通过

更改属性,而不是进入 ini 文件

选项文件

然后在常规选项卡下我找到lower_case_table_names并将其更改为0

但又是同样的错误。

【问题讨论】:

  • 可能第一个答案都是相关的——操作系统在处理文件名方面的差异导致了 8.0 之前对标志的需求。 8.0 通过将表名存储在内部 InnoDB 数据库(新的“数据字典”)中添加到该问题。

标签: mysql sql windows settings


【解决方案1】:

你可以在这里阅读https://bugs.mysql.com/bug.php?id=89035

自 8.0.5 起

现在禁止使用 lower_case_table_names 启动服务器 与服务器运行时使用的设置不同的设置 初始化。该限制是必要的,因为使用的排序规则 各种数据字典表字段基于时定义的设置 服务器已初始化,并以不同的方式重新启动服务器 设置会引入关于标识符如何的不一致 排序和比较。

禁止这样做,导致服务无法启动。

【讨论】:

    【解决方案2】:

    我建议您为此配置使用值 2,因为您尝试在 Windows 机器上使用 0,这可能会导致您的数据库表出现问题,基于 windows/Mac OS 的 documentation0的用法:

    表和数据库名称使用字母大小写存储在磁盘上 在 CREATE TABLE 或 CREATE DATABASE 语句中指定。姓名 比较区分大小写。 您不应将此变量设置为 0 如果您在具有不区分大小写文件的系统上运行 MySQL 名称(例如 Windows 或 macOS)。如果你强制这个变量为 0 --lower-case-table-names=0 在不区分大小写的文件系统上使用不同的字母大小写访问 MyISAM 表名,索引损坏 可能会导致。

    在链接文档中的值2 可以解决您的问题,它会以您使用的相同名称将表存储在磁盘上,在这种情况下查找将不区分大小写:

    表和数据库名称使用字母大小写存储在磁盘上 在 CREATE TABLE 或 CREATE DATABASE 语句中指定,但 MySQL 在查找时将它们转换为小写。名称比较不是大小写 敏感的。这仅适用于不支持的文件系统 区分大小写! InnoDB 表名和视图名存储在 小写,如 lower_case_table_names=1。

    【讨论】:

      最近更新 更多