如何在Windows中的(现有)mySQL名称中使用UPPER案例

时间:2015-12-30 20:15:36

标签: mysql phpmyadmin case-sensitive

有没有人知道我如何保留我的表名中的案例 (使用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,并且仍然会遇到相同的错误。

然后我花了20分钟试图找出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似乎是错误报告翻译的别名。有点刺激。

2 个答案:

答案 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的表。