Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mysql表名区分大小写_Php_Mysql_Sql_Database - Fatal编程技术网

Php mysql表名区分大小写

Php mysql表名区分大小写,php,mysql,sql,database,Php,Mysql,Sql,Database,我有一个网站在开发服务器上运行,在那里我可以执行如下查询: SELECT * FROM Agents; OR SELECT * FROM agents; 我是说,它在两种情况下都能运行。但是,在我的生产服务器中,它给了我错误。 我应该做些什么来克服这个问题。因为我在php脚本中到处都使用大写和小写 错误: Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42S02]: Base table or vie

我有一个网站在开发服务器上运行,在那里我可以执行如下查询:

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' 

您的开发服务器是Windows还是Mac?linux上的Mysql默认有区分大小写的表名,而Windows和Mac则没有。为了实现所有系统之间的最佳兼容性,我建议始终保持外壳的一致性


不幸的是,我建议您在所有脚本中修复它。如果您可以在生产服务器上禁用区分大小写功能,那就太好了,但是如果您迁移到其他系统或在无法控制生产设置的系统上工作,最好的编码实践是假定它区分大小写。

您需要编辑
/etc/my.cnf
并设置

  • 打开MySQL配置文件:
    /etc/my.cnf
  • 查找:
    [mysqld]
    部分
  • 添加:小写字母表名称=2
  • 保存并重新启动MySQL服务:
    /etc/init.d/MySQL restart

如果小写\u表格\u名称设置为0,则表格名称按指定存储,比较区分大小写。如果设置为1,则表名以小写形式存储在磁盘上,并且比较不区分大小写如果设置为2,则表名按给定值存储,但以小写字母进行比较。此选项也适用于数据库名称和表别名。

MySQL会给您带来什么错误?请尝试在
/etc/my.cnf
中添加
小写字母\u table\u names=1
。如果我将它转换为小写,这将使您所有的表都小写,无论您如何编写它们。那么我就不能用大写字母访问它们了。在php脚本中,我使用了两种情况。命名要一致,问题要解决。这一点我不能改变。这将是一个巨大的变化。我的服务器在linux(centOS)上。我在mac和windows上工作。或者查找并替换您喜爱的IDE中的所有文件。你真的应该把它修好。