我有一个测试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
变量,服务可以重新开始。
如何设置变量以使我的表名称区分大小写?
修改
将该变量设置为1
或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数据文件夹与其他应用程序弄混。
让我知道您是否确实遇到问题。