我在过去的几个月里一直在研究CakePHP应用程序,并最终将它放在互联网上的测试服务器上。它很容易上传和生活,它起到了一定的作用。
存在与服务器的数据库连接,应用程序可以从数据库中检索数据。但是,有些页面现在返回SQL错误:
Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'personel.companyid' in 'where clause'
我认为应用程序可能出错,所以我重新检查了我的本地副本,本地副本工作正常。然后,我检查了测试服务器上的数据库模式,以查看在我收到这些错误的所有情况下该列是否实际存在。显然未知的列包含我的本地数据库的副本。
我很困惑为什么会这样。我本地计算机与测试服务器之间唯一不同的是,我在Windows计算机上本地开发了XAMPP设置的站点,测试服务器在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
答案 0 :(得分:3)
我认为查询区分大小写。尝试在任何地方使用大写Personel
。
请参阅http://dev.mysql.com/doc/refman/5.0/en/identifier-case-sensitivity.html。第一段将解释MySQL在Unix上是区分大小写而不是在Windows上。