我有一个测试Linux服务器运行数据库进行测试,但在本地,我正在运行一个窗口。这意味着我的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,服务可以再次正常启动。
发布于 2018-02-09 15:34:40
来自手册
从MySQL 5.5.46开始,如果您试图在一个不区分大小写的文件系统上使用--lower_case_table_names=0启动服务器,则会打印一条错误消息,然后服务器退出。
MariaDB也是如此。
发布于 2020-04-29 16:08:09
正如elenst所述,如果将lower_case_table_names设置为OFF或将lower_case_file_system设置为0,则可能会出现错误消息。该请求程序在lower_case_file_system系统上进行开发,但与许多系统一样,它部署在具有大小写敏感性的linux系统上,并且可能会出现兼容性问题,在开发过程中某些内容可能会正常工作,而在部署过程中则不会。
与流行的观念相反,Windows (> NT)允许区分大小写的文件系统,NTFS从一开始就支持区分大小写的文件,甚至可以(必须)在每个文件夹的基础上设置区分大小写的文件。干净利落。如果将mariadb上的数据文件(例如,mariadb\ data )的位置和内容设置为区分大小写的行为,则在mysqld下,lower_case_table_name值在my.ini中可以设置为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工作台中的许多错误之一是,它不完全理解这一点,错误地假设lower_case_file_system=1在Workbench上运行时会抱怨服务器配置问题。
还有一句警告。虽然操作系统和FS支持的情况下,感觉到辉煌,许多应用程序不理解。但首先,您不应该将MySQL或MariaDB数据文件夹与其他应用程序混为一谈。
如果你遇到问题请告诉我。
https://stackoverflow.com/questions/48704227
复制相似问题