MySql改变了lower_case_table_names现在我不能选择表

问题描述:

我做了this为了能够创建表上,现在当我尝试改变,选择或做任何事情与上套管类我有一个错误,因为它看起来像一个错误对于它的下套管版本MySql改变了lower_case_table_names现在我不能选择表

SELECT cust_id FROM Customer LIMIT 0, 1000 
Error Code: 1146. Table 'toys.customer' doesn't exist 

我使用模式的“玩具”,它有一个客户表我正确创建

+0

尝试反推你的表名 – ozy

+0

顺便说一句,你重新启动你的MySQL服务器? – 1000111

+0

是的,我重新启动,否则我将无法创建上套管表,并且我只是尝试创建一个下套管表来测试相同的事情,它在那里工作 – user6008337

在my.cnf做的lower_case_table_names = 2,使用上的情况下

从MySQL手册,约lower_case_table_names值:

表和数据库名称使用在CREATE TABLE或CREATE DATABASE语句中指定的大小写存储在磁盘上。名称比较区分大小写。如果您在具有不区分大小写的文件名(例如Windows或OS X)的系统上运行MySQL,则不应将此变量设置为0。如果在不区分大小写的文件系统上使用--lower-case-table-names = 0强制将此变量设置为0,并使用不同的lettercase访问MyISAM表名,则可能导致索引损坏。

表名在磁盘上以小写形式存储,名称比较不区分大小写。 MySQL在存储和查找时将所有表名称转换为小写字母。这种行为也适用于数据库名称和表别名。

表和数据库名称使用CREATE TABLE或CREATE DATABASE语句中指定的lettercase存储在磁盘上,但MySQL在查找时将它们转换为小写字母。名称比较不区分大小写。这只适用于不区分大小写的文件系统! InnoDB表名称以小写形式存储,与lower_case_table_names = 1相同。

在Unix的lower_case_table_names的默认值是0在Windows中,默认值为1。在OS X上,默认值是2

编辑my.cnf中值不会忘记重启后MySQL的。

+0

“lower_case_table_names = 2”被编辑在文件“my.ini”的末尾,在这个目录“C:\ ProgramData \ MySQL \ MySQL Server 5.7”中,我使用的是Windows 10.我从服务中重新启动MySQL,它没有在我重新启动之前没有工作,现在我可以用大写字母创建,但是我不能修改它们,或者只是从脚本中使用它们。 – user6008337

+0

抱歉,我错过了您使用的Windows。 –

+0

你能从命令行访问mysql吗?尝试查询>>显示变量,如'%case_table_names%';它向你展示了什么? –