2

我有 php 代码,其中数据库表名的第一个字母在每个地方都是大写字母,但数据库中的表名是小写的。

我应该使用什么全局设置,这样就不需要在每个代码文件中更改以在与数据库中相同的情况下生成表名。

4

2 回答 2

4

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

select * from my_table

会成功,而

select * from MY_TABLE

将因某种表不存在消息而失败。

如果您希望这两个语句都成功,则需要将以下行 lower_case_table_names = 1 放在 /etc/my.cnf 或保留 MySQL 配置的任何位置。请务必将系统变量添加到配置文件的 [mysqld] 部分。

于 2012-10-15T12:24:20.957 回答
1

您需要检查 mysql 标识符:

 lower_case_table_names

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

http://dev.mysql.com/doc/refman/5.0/en/identifier-case-sensitive.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 上始终以正确的字母大小写引用您的数据库和表名。如果您将语句转移到字母大小写很重要的 Unix,如果字母大小写不正确,它们将不起作用。

于 2012-10-15T12:19:01.300 回答