当我尝试查询小写的MySQL表时出现错误:
mysql> select * from selection_vc limit 1;
ERROR 1146 (42S02): Table 'mydb.selection_vc' doesn't exist当我使用大写字母时,一切都是OK:
mysql> select * from SELECTION_VC limit 1;
+-------------+-------------+-------------+--------+
| CAMPAIGN_ID | CONTACT_ID | COLUMN_NAME | MONTH |
+-------------+-------------+-------------+--------+
| ALCA-32515W | ALCA-2X08DX | A | 201207 |
+-------------+-------------+-------------+--------+
1 row in set (0.00 sec)我有这个错误(功能?)只有在表名上,列名才能以小写或大写访问。这只会发生在我安装在Linux上的数据库中,而我的Mac上的数据库没有这个问题。
我是不是在MySQL配置中遗漏了什么,或者这是一个错误?
发布于 2012-07-04 18:18:37
如手册的Identifier Case Sensitivity部分所述:
在MySQL中,数据库对应于数据目录中的目录。数据库中的每个表至少对应于数据库目录中的一个文件(根据存储引擎的不同,还可能有更多文件)。触发器也对应于文件。因此,底层操作系统的大小写敏感性在数据库、表和触发器名称的大小写敏感性中起着一定的作用。这意味着此类名称在Windows中不区分大小写,但在大多数Unix变体中区分大小写。一个值得注意的例外是Mac,它基于Unix,但使用不区分大小写的默认文件系统类型(HFS+)。
它接着说:
为避免因数据库或表名的大小写而导致的数据传输问题,您有两种选择:
lower_case_table_names=1。这样做的主要缺点是,当您使用SHOW TABLES或SHOW DATABASES时,您看不到它们在Unix上的原始lettercase.lower_case_table_names=0和Windows上的lower_case_table_names=2中的名称。这将保留数据库和表名的大小写。这样做的缺点是,您必须确保您的语句在Windows上总是以正确的字母引用数据库和表名。如果您将语句转移到Unix,其中大写字母很重要,则如果大小写不正确,这些语句将不起作用。Exception:如果您正在使用InnoDB表,并且试图避免这些数据传输问题,则应在所有平台上将lower_case_table_names设置为1,以强制将名称转换为小写。
https://stackoverflow.com/questions/11327062
复制相似问题