查询中区分大小写的MySQL表名

我有php代码,数据库表名的第一个字母是大写字母,而数据库中的表名都是小写字母。

我应该使用什么样的全局设置,以便不必在每个代码文件中更改与数据库中相同大小写的表名。


MySQL元数据在Linux上默认是区分大小写的。 那就是如果你有一张表my_table,那么小写

select * from my_table

将会成功

select * from MY_TABLE

会失败,某种表不存在消息。

如果你希望这两个语句都能成功,你需要在你的/etc/my.cnf文件或者你保存你的MySQL配置的地方放置下面一行lower_case_table_names = 1。 一定要将系统变量添加到配置文件的[mysqld]部分。


您需要检查mysql标识符:

 lower_case_table_names

您需要检查位于您的mysql目录中的my.ini文件。 有关源和目标操作系统的更多详细信息,请检查:

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

从上面的URL中提取:

如果您仅在一个平台上使用MySQL,则通常不必将lower_case_table_names变量从默认值更改。 但是,如果要在文件系统区分大小写不同的平台之间传输表,可能会遇到困难。 例如,在Unix上,可以有两个名为my_table和MY_TABLE的表,但在Windows上,这两个名称被认为是相同的。 为了避免数据库或表名称发生数据传输问题,您有两种选择:

Use lower_case_table_names=1 on all systems. The main disadvantage with this is that when you use SHOW TABLES or SHOW DATABASES, you do

没有看到他们原来的信箱中的名字。

Use lower_case_table_names=0 on Unix and lower_case_table_names=2 on Windows. This preserves the lettercase of database and table names.

这样做的缺点是,您必须确保您的语句始终在Windows上使用正确的lettercase引用数据库和表名。 如果你将你的语句转移到Unix中,那么lettercase是有意义的,如果这个casecase是不正确的,它们就不起作用。

链接地址: http://www.djcxy.com/p/69211.html

上一篇: mysql case sensitive table names in queries

下一篇: Are table names in MySQL case sensitive?