2011-05-24 81 views
0

工作,我有以下查询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莱尼像服务器虚拟机,我不断收到服务器上的同样的问题,而在本地机器上就像一个魅力)

我做的另一件事是测试服务器的PhpMyAdmin工具上的查询,它工作正常,所以我猜这是PHP过程的凭据问题,任何想法?

+0

是否有错误?它在开发服务器上做什么,它不在生产服务器上执行? – Jrod 2011-05-24 18:02:13

+0

是在服务器上我有一个“SQLSTATE [42000]:语法错误或访问冲突:1142” – 2011-05-24 18:03:45

+0

看到作为语句在您的开发服务器上运行我会说这是一个访问冲突,而不是语法错误。错误信息的尾部是否还有其他内容? – Jrod 2011-05-24 18:09:21

回答