在 mysql 中设置 lower_case_table_names=1 安装在 RHEL 上而不重新安装

setting lower_case_table_names=1 in mysql installed on RHEL without reinstalling it

我可以在 MySql 上声明 lower_case_table_names=1 而无需重新安装吗?

我有一个 Web 应用程序,我想将其部署在基于 RHEL 的服务器上 MySQL(8.0.18)安装在上面。问题是我已经在安装了 MySQL 的 Windows OS 上测试了我的网络应用程序的完整性,但没有遇到任何问题。但是当我在 RHEL 上 运行 相同时,MySQL 在执行诸如 'table USER_MASTER doesn't exist',虽然它在我的数据库中,但有 小案例,例如 'user_master'.

我进行了一些搜索,发现在 UNIX 中区分大小写很重要,而在 Windows 中则没有。所以我在 my.cnf 中使用设置 lower_case_table_names=1 并认为这可以解决问题,但很快我发现 这个变量必须在期间声明MySql 服务器初始化时间。

我经历了以下的点赞:

https://mysql.wisborg.dk/2019/04/14/install-mysql-8-on-linux-with-lower_case_table_names-1/

https://bugs.mysql.com/bug.php?id=90695

所有这些都表明我必须重新安装 MySql 才能使 lower_case_table_names 正常工作。

下面是我直接使用lower_case_table_names=1得到的错误。

2019-11-08T05:30:17.331505Z 1 [ERROR] [MY-011087] [Server] Different lower_case_table_names settings for server ('1') and data dictionary ('0').

我希望一定有其他方法可以避免重新安装 MySql 和设置该变量,避免遍历我的代码并将 table 名称替换为小写字母。

谢谢。

不,不重新安装就无法在 mysql v8.0 上更改此设置。 Mysql manual这点很清楚:

It is prohibited to start the server with a lower_case_table_names setting that is different from the setting used when the server was initialized. The restriction is necessary because collations used by various data dictionary table fields are determined by the setting defined when the server is initialized, and restarting the server with a different setting would introduce inconsistencies with respect to how identifiers are ordered and compared.

这也是对您链接的错误报告的回答,所以我不完全确定您希望在这里得到什么答案。