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

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

我有一个Web应用程序,要部署在安装了 MySQL(8.0.18)的基于 RHEL 的服务器上。问题是我已经在装有MySQL的Windows操作系统上测试了我的Web应用程序的运行状况,并且没有遇到任何问题。但是,当我在RHEL上运行相同代码时,MySQL在执行'表USER_MASTER不存在'之类的查询时给了我一个错误,虽然它在我的数据库中,但是带有小写的情况,例如' 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和设置该变量,并避免遍历我的代码并将表名替换为小写字母。

谢谢。

czg2009 回答:在RHEL上安装的mysql中设置lower_case_table_names = 1而不重新安装它

否,在不重新安装mysql v8.0的情况下无法更改此设置。 Mysql manual对此非常清楚:

  

禁止使用与初始化服务器时使用的设置不同的lower_case_table_names设置启动服务器。该限制是必要的,因为各种数据字典表字段使用的归类是由初始化服务器时定义的设置确定的,并且使用其他设置重新启动服务器会导致标识符的排序和比较方式不一致。

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

本文链接:https://www.f2er.com/3139882.html

大家都在问