php - mysql 表名区分大小写

标签 php mysql sql database

我有一个网站在开发服务器上运行,在那里我可以执行类似的查询,

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/

相关文章:

php - 如何使用 codeigniter 将自动增量 id 保存在另一个表中

php - 有经验的 Web 开发人员迁移到 PHP 的好资源?

php - Laravel 5.4 存储链接

sql - 在更新中使用regexp_replace

sql - QSqlTableModel 的问题——没有自动更新

php - 如何使html表列<th></th>根据mysql中选定的列动态更改

php - Laravel Postgre 无效文本表示

php - 查找 SQL 语法中的错误

php - PHP中的动态行列显示

mysql - SQL SELECT(多-2-多)