0

在过去的几个月里,我一直在开发一个 CakePHP 应用程序,并最终将它放在 Internet 上的测试服务器上。安装它并生活起来相当容易,而且它在一定程度上起作用。

有一个与服务器的数据库连接,应用程序可以从数据库中检索数据。但是,一些页面现在返回 SQL 错误,如下所示:

Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'personel.companyid' in 'where clause'

我认为这可能是应用程序的错误,所以我重新检查了我的本地副本,本地副本工作正常。然后,我检查了测试服务器上的数据库模式,以查看在我收到这些错误的所有情况下是否确实存在该列。显然未知的列在那里,包括我本地数据库的副本。

我对为什么会发生这种情况感到困惑。我的本地机器和我的测试服务器之间唯一不同的是,我在 XAMPP 设置下的 Windows 计算机上本地开发了站点,并且测试服务器在 Linux (CentOS) VPS 上运行。

还有其他可能导致此问题的原因吗?

编辑:*
这是两个失败的查询:

Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'personel.companyid' in 'where clause'

SQL Query: SELECT `Personel`.`id`, `Personel`.`firstname`, `Personel`.`surname`, `Personel`.`email`, `Personel`.`companyid`, `Personel`.`accesslevel`, `Personel`.`poc`, `Personel`.`password`, `Personel`.`telephone`, `Accesslevel`.`id`, `Accesslevel`.`acclevname` FROM `personel` AS `Personel` LEFT JOIN `accesslevels` AS `Accesslevel` ON (`Personel`.`accesslevel` = `Accesslevel`.`id`) WHERE `personel`.`companyid` = 1 

和这个:

Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'personel.companyid' in 'where clause'

SQL Query: SELECT `Personel`.`id`, `Personel`.`firstname`, `Personel`.`surname`, `Personel`.`email`, `Personel`.`companyid`, `Personel`.`accesslevel`, `Personel`.`poc`, `Personel`.`password`, `Personel`.`telephone`, `Accesslevel`.`id`, `Accesslevel`.`acclevname` FROM `personel` AS `Personel` LEFT JOIN `accesslevels` AS `Accesslevel` ON (`Personel`.`accesslevel` = `Accesslevel`.`id`) WHERE `personel`.`companyid` = 1 
4

1 回答 1

3

我认为查询区分大小写。尝试在任何地方使用大写字母Personel

请参阅http://dev.mysql.com/doc/refman/5.0/en/identifier-case-sensitive.html。第一段将解释 MySQL 在 Unix 上区分大小写而不是在 Windows 上。

于 2012-05-14T09:59:45.750 回答