更改MariaDB

时间:2018-02-09 10:52:09

标签: mysql mariadb

我有一个测试Linux服务器运行数据库进行测试,但本地我在Windows上工作。这意味着我的lower_case_table_names变量设置为1,因此基本上我的表名称区分大小写,而在Linux上默认设置为0

我尝试更改位于我的安装目录my.ini中的C:\Program Files\MariaDB 10.0\data\my.ini中的变量。在应用这些更改之前,我需要重新启动该服务。

我进入了我的服务并停止了MySql服务。然而,尝试再次启动它,我收到错误:

  

1067:流程意外终止

所以我认为MariaDB无法理解my.ini配置。

正如我通过阅读文档所理解的那样,这是实际执行此操作的方法之一。从lower_case_table_names文件中删除my.ini变量,服务可以重新开始。

如何设置变量以使我的表名称区分大小写?

修改

将该变量设置为12服务可以重新开始。

2 个答案:

答案 0 :(得分:2)

来自manual

  

从MySQL 5.5.46开始,将打印一条错误消息并退出服务器   如果您尝试使用--lower_case_table_names = 0启动服务器   不区分大小写的文件系统。

同样适用于MariaDB。

答案 1 :(得分:0)

像elenst所说,如果在具有Lower_case_file_system ON或1的系统上将lower_case_table_names设置为OFF或0,则可能会出现错误消息。敏感性,并且可能会遇到兼容性问题,其中某些问题可能在开发中起作用,而在部署中却无效。

与流行的看法相反,Windows(> NT)允许区分大小写的文件系统,而NTFS从一开始就支持区分大小写的文件,并且区分大小写甚至可以(必须)在每个文件夹中进行设置。整齐。如果mariadb上数据文件的位置和内容(例如mariadb \ data)设置为区分大小写,则可以在[mysqld]下的my.ini中将lower_case_table_name值设置为0。

lower_case_table_names = 0

这是我的结果

select @@lower_case_file_system, @@lower_case_table_names;

在Windows 10系统上(运行wampserver,以及mariadb 10.4.10:

+--------------------------+--------------------------+
| @@lower_case_file_system | @@lower_case_table_names |
+--------------------------+--------------------------+
|                        0 |                        0 |
+--------------------------+--------------------------+
1 row in set (0.000 sec)

完美。

因此,问题仍然在于如何将数据文件夹设置为区分大小写? fsutil可以将创建大小写敏感的标志设置为文件夹之后的文件夹。命令如下:

fsutil file setcasesensitiveinfo *data* enable

数据使用文件夹名称。有一个罪魁祸首,该命令不支持一次递归设置所有子文件夹。一个简单的PS脚本可以解决这个问题:

Get-ChildItem -Path C:\wamp64\bin\mariadb\mariadb10.4.10\data -Directory -Recurse | foreach {fsutil file SetCaseSensitiveInfo $_.Fullname}

显然,您必须将路径更改为您的数据文件夹,而不是我的文件夹。

备注:MySQL Workbench中的许多错误之一是它不太了解这一点,并且错误地假设在Windows上使用lower_case_file_system = 1,因此抱怨服务器配置问题。

请注意。尽管OS和FS非常支持区分大小写,但许多应用程序对此并不了解。但是首先,您不应该将MySQL或MariaDB数据文件夹与其他应用程序弄混。

让我知道您是否确实遇到问题。