有没有人知道我如何保留我的表名中的案例 (使用phpMyAdmin赢取10,最新的xampp发行版)。这可能是因为xampp正在使用MariaDB而不是mySQL吗?
表名被重写为全部小写。
在phpMyAdmin网站上阅读使用保留案例我应该添加:
'set-variable=lower_case_table_names=0'
这从一个错误消息开始停止mySQL:
[ERROR] c:\xampp\mysql\bin\mysqld.exe: unknown variable 'set-variable=lower_case_table_names=0'
然后在阅读完这里的答案后,我了解到我应该使用lower_case_table_names=0
,以便my.ini
,并且仍然会遇到相同的错误。
set-variable=lower_case_table_names=0
被设置的位置。 (认为它必须被缓存或复制或其他东西。)
绝望中我删除了lower_case_table_names=0
,错误消失了。我把它放回去了
[ERROR] c:\xampp\mysql\bin\mysqld.exe: unknown variable 'set-variable=lower_case_table_names=0'
错误。 IE似乎是错误报告翻译的别名。有点刺激。
答案 0 :(得分:2)
您应该仔细阅读文档位,特别是identifier case sensitivity section。
在MySQL中,数据库对应于数据中的目录 目录。数据库中的每个表对应至少一个 数据库目录中的文件(可能更多,取决于 存储引擎)。触发器也对应于文件。所以, 底层操作系统的区分大小写是其中的一部分 在数据库,表和触发器名称的敏感性的情况下。这个 意味着这些名称在Windows中不区分大小写,但都是大小写 在大多数Unix中都很敏感。
价值含义
0使用表格和数据库名称存储在磁盘上 CREATE TABLE或CREATE DATABASE语句中指定的lettercase。 名称比较区分大小写。 你不应该这样设置 如果您在具有的系统上运行MySQL,则变量为0 不区分大小写的文件名(例如Windows或OS X)。如果强制使用 此变量为0,其中--lower-case-table-names = 0 不区分大小写的文件系统并使用访问MyISAM表名 不同的lettercase,可能导致索引损坏。 1表名是 在磁盘上以小写形式存储,名称比较不是大小写 敏感。 MySQL将所有表名转换为小写的存储和 抬头。此行为也适用于数据库名称和表 别名。 2使用表将数据库名称和数据库名称存储在磁盘上 CREATE TABLE或CREATE DATABASE语句中指定的lettercase, 但MySQL在查找时将它们转换为小写。名称比较是 不区分大小写。这仅适用于非大小写的文件系统 敏感! InnoDB表名以小写形式存储,如下所示 的lower_case_table_names = 1。
总结一下:在Windows上你不应该将lower_case_table_names设置为0.如果你想在windows上保留表名的字母大小写,那么将lower_case_table_names设置为2.
using system variables部分介绍了如何以各种方式设置系统变量。
答案 1 :(得分:-1)
在my.ini文件中放置lower_case_table_names = 2允许在表格名称中使用大写和小写...但是...... BIG但是......它不允许你将大写字母放入EXISTING文件中名。
解决方案是将您的表格复制到一个新表格,其中包含"正确的"名。
但是,由于这只会更改表名的外观(表存储在小写文件中),因此必须使用中间表。
EG您希望表名为HelloWorld,但您发现它存储为helloworld。将上面的行添加到my.ini文件中,然后将helloworld复制到一个新表,比如" helloTemp&#34 ;,删除helloworld将helloTemp删除到HelloWorld删除helloTemp,你有一个名为HelloWorld的表。