Mysql 更改MariaDB中的小写字母表名称变量

Mysql 更改MariaDB中的小写字母表名称变量,mysql,mariadb,Mysql,Mariadb,我有一个测试Linux服务器运行数据库进行测试,但在本地,我正在windows上工作。这意味着我的lower\u case\u table\u names变量设置为1,因此基本上我的表名区分大小写,而在Linux上默认设置为0 我试图更改安装目录中的my.ini中的变量(C:\Program Files\MariaDB 10.0\data\my.ini)。在应用这些更改之前,我确实需要重新启动服务 我进入我的服务并停止了MySql服务。尝试再次启动时,出现以下错误: 1067:进程意外终止 因此

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

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

我进入我的服务并停止了
MySql
服务。尝试再次启动时,出现以下错误:

1067:进程意外终止

因此,我想MariaDB无法理解
my.ini
配置

正如我通过阅读文档所理解的,这是实际实现这一点的方法之一。从
my.ini
文件中删除
lower\u case\u table\u names
变量,服务可以重新启动

如何设置变量,使表名区分大小写

编辑

将该变量设置为
1
2
服务可以再次正常启动。

来自:

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

这同样适用于MariaDB。

来自:

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


这同样适用于MariaDB。

就像elenst所说的那样,如果将小写字母表名称设置为OFF或0,则在小写字母文件系统为on或1的系统上可能会出现错误消息。asker是在Windows系统上开发的,但是,正如许多人一样,它部署在linux系统上,该系统提供了区分大小写的功能,并且可能会遇到兼容性问题,即某些东西可能在开发中起作用,但在部署中不起作用

与流行的观点相反,Windows(>NT)支持区分大小写的文件系统,NTFS从一开始就支持区分大小写的文件,甚至可以(必须)按文件夹设置区分大小写的文件。整洁的如果将mariadb上数据文件的位置和内容(例如mariadb\data)设置为区分大小写的行为,则可以在[mysqld]下的my.ini中将小写的_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上时,较低的_case_file_system=1,因此抱怨服务器配置问题

还有一点要注意。虽然操作系统和FS非常支持区分大小写的功能,但许多应用程序并不理解这一点。但首先,你不应该将MySQL或MariaDB数据文件夹与其他应用程序混为一谈


如果您确实遇到问题,请告诉我。

如elenst所述,如果在启用小写文件系统或1的系统上,将小写表格名称设置为OFF或0,则可能会出现错误消息。询问者在Windows系统上开发,但与许多人一样,部署在提供区分大小写功能的linux系统上,并且可能与iss兼容某些东西可能在开发中起作用,但在部署中不起作用

与流行的观点相反,Windows(>NT)允许区分大小写的文件系统,NTFS从一开始就支持区分大小写的文件,并且可以(必须)在每个文件夹上设置区分大小写的文件。整洁。如果mariadb上的数据文件的位置和内容(例如mariadb\data)设置为区分大小写的行为。可以在[mysqld]下的my.ini中将较低的\u case\u 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上时,较低的_case_file_system=1,因此抱怨服务器配置问题

还有一点要注意。虽然操作系统和FS非常支持区分大小写的功能,但许多应用程序并不理解这一点。但首先,你不应该将MySQL或MariaDB数据文件夹与其他应用程序混为一谈


如果您遇到问题,请告诉我。

在Windows上无法获取大写的正常表名?在Windows上无法获取大写的正常表名?