4

我正在运行 Blogengine.Net 并注意到这些表都是小写的(表名 be_settings),但很多查询都是混合大小写的(Select * from be_Settings)。如果您的 MySql 实例在 Windows 上运行或设置为与 Windows 兼容,则此方法可以正常工作。我收到一个错误,因为我的托管服务提供商 MySql 实例区分大小写。是否可以更改设置以通过 phpMyAdmin 修复此错误?如果我不需要,我不想浏览所有代码并修复 BlogEngine.Net。

4

4 回答 4

3

MySQL 表名中的大小写敏感度特定于操作系统。MySQL 数据存储在文件中,这些文件受操作系统强制执行的任何规则的约束。例如,Linux 区分大小写。

有一个可以操作的变量“lower_case_table_names”,但似乎您必须重新创建所有表。

http://dev.mysql.com/doc/refman/5.0/en/identifier-case-sensitive.html

于 2009-06-02T05:06:05.027 回答
1

您所追求的设置是 lower_case_table_names (设置为 1 或 2)。不幸的是,这需要在 MySQL 守护进程启动时设置,而不是通过 phpmyadmin。您能否要求您的托管服务提供商为您执行此操作?

于 2009-06-02T04:38:29.803 回答
1

如果您尝试为 BlogEngine.Net 解决这个问题,您可以轻松地重命名所有表以使用 CamelCase,因为 BlogEngine.Net 中的所有查询都是使用 CamelCase 编写的。

于 2009-06-02T20:38:54.437 回答
0

数据库是如何创建的?您可能会发现创建表的查询使用了正确的大小写:

CREATE TABLE be_Settings ( ... )

只是 myisam 表作为文件存储在文件系统中,并且由于它在 Windows 上,它们只是转换为小写。如果您在 linux 系统上从这些查询创建数据库,您会发现所有表的大小写都是正确的。

从中吸取的教训是始终使表名小写...

于 2009-06-02T04:37:43.220 回答