我有一个网站在开发服务器上运行,在那里我可以执行类似的查询,
SELECT * FROM Agents;
OR
SELECT * FROM agents;
我的意思是,它在两种情况下都可以运行。但是,在我的生产服务器中,它给了我错误。 我应该做什么来克服这个问题。因为我在 php 脚本中到处都使用了大写和小写。
错误:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42S02]:
Base table or view not found: 1146 Table 'database_name.Agents' doesn't exist'
最佳答案
您需要编辑/etc/my.cnf
并设置lower_case_table_names server variable .
- 打开MySQL配置文件:
/etc/my.cnf
- 查找:
[mysqld]
部分 - 添加:lower_case_table_names = 2
- 保存并重启MySQL服务:
/etc/init.d/mysql restart
如果lower_case_table_names设置为0,表名将按指定存储,并且比较区分大小写。如果设置为 1,表名将以小写形式存储在磁盘上,并且比较不区分大小写。 如果设置为 2,表名称将按给定形式存储,但以小写形式进行比较。此选项也适用于数据库名称和表别名。
关于php - mysql 表名区分大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21536311/