MySQL查询仅适用于某些版本

时间:2011-05-24 17:59:27

标签: php mysql

我有以下查询

SELECT *
FROM (
     (
       SELECT
         DATEDIFF( birthdate,  CONCAT(YEAR(birthdate), '/1/1') ) AS Distance,
         DATEDIFF( CURDATE(), CONCAT(YEAR(CURDATE()), '/1/1')) AS TodaysDistance,
         db.Contact.*
       FROM
         db.Contact
       WHERE
         db.Contact.id IN (
           SELECT
             db.addressbook.contactid
           FROM
             db.addressbook
           WHERE
             db.addressbook.ownerid = 9
       )
       ) AS DistanceTable
   )
   WHERE
     ABS(DistanceTable.Distance - DistanceTable.TodaysDistance) <= 7
   ORDER BY
     ABS(DistanceTable.Distance - DistanceTable.TodaysDistance)
   LIMIT 0, 10;

它会加载我的联系人列表表的生日,并在我的联系人列表中显示接下来的10个即将到来的生日。我的开发服务器是MySQL 5.0.51a,生产服务器是5.1.57,有没有机会出现版本问题?

编辑我确实在我的本地PC上模拟了完全相同的环境(相同的PHP版本,相同的MySQL版本甚至安装在运行Debian Lenny的虚拟机上,就像服务器一样,我一直都是这样的服务器上的问题,而在本地机器上的工作就像一个魅力)

我做的另一件事是在服务器的PhpMyAdmin工具上测试查询,它在那里工作正常,所以我猜这是PHP进程的凭据有问题,有什么想法吗?

1 个答案:

答案 0 :(得分:1)

请在此处查看MySQL错误代码:http://dev.mysql.com/doc/refman/5.0/en/error-messages-server.html

确保您在开发服务器和生产服务器上具有相同的访问权限。您的错误代码对应于:

%s command denied to user '%s'@'%s' for table '%s'