mysql - 如何在 MySql 中强制区分大小写的表名和列名?

标签 mysql windows case-sensitive

问题是我们在 windows 机器上工作,完成后我们将代码部署到 unix 机器上。该代码在 windows 上运行良好,但在 unix 中,在以正确的大小写更改表名后,我们得到类似“不存在这样的表”的错误,它在 unix 中也运行良好。实际上,在 windows 中默认情况下不区分大小写的表名,但在 unix 中它们确实有(请阅读 MySQL 表实际上是文件,在 unix 中我们有区分大小写的文件名,但在 windows 中没有)。解决方法可能是重新创建所有表,并让表名小写。是的,我们也可以这样做,没关系。

但是,我们仍然可以对 MySql(windows 机器)中的表名强制区分大小写。如果是,请告诉我该怎么做。

最佳答案

设置名为 lower_case_table_names .如果将其设置为 0,则比较将区分大小写。

然而,

You should not set this variable to 0 if you are running MySQL on a system that has case-insensitive file names (such as Windows or Mac OS X). If you force this variable to 0 with --lower-case-table-names=0 on a case-insensitive file system and access MyISAM tablenames using different lettercases, index corruption may result.

在所有系统(包括 Linux)中使所有表名小写,即。将其设置为 1 的值,听起来是更好的选择:

Table names are stored in lowercase on disk and name comparisons are not case sensitive. MySQL converts all table names to lowercase on storage and lookup. This behavior also applies to database names and table aliases.

关于mysql - 如何在 MySql 中强制区分大小写的表名和列名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9442848/

相关文章:

mysql - Pdo更新函数

php - 带点和字母数字的自然排序

php - 如果服务器有很多客户端,最后一个增量 ID 是否可能会与另一个插入搞乱?

windows - 如何运行本地 Docker 镜像

c# - 查询字符串和文本大小写

MYSQL 获取所有列中只有 NULL 的行

在 Windows 上将 EXPAT 编译为静态链接的 .a

c++ - 使用窗口 native API 创建 GUI

java - maven shade plugin 会在 Windows 上自动缩小包名吗?

php - 不区分大小写但敏感