MySQL语句在本地计算机上失败,但在部署计算机上失败?

MySQL语句在本地计算机上失败,但在部署计算机上失败?,mysql,sql,jakarta-ee,Mysql,Sql,Jakarta Ee,作为工作的一部分,我被分配到一个庞大的JavaEE项目中,该项目中散布着数百条SQL语句。我在我的计算机上设置了这个项目,并且能够很好地部署网站,并且使用了99%的网站而没有问题。不过我遇到了一个奇怪的情况,那就是我试图在网站上创建一个条目(这是一个基于政府的项目)。MySQL在程序尝试执行查询时引发异常: SELECT d.id, ..., dol.weight, d.status FROM DeliveryOrderEJB d, InbondEJB_DeliveryOrderEJB_link

作为工作的一部分,我被分配到一个庞大的JavaEE项目中,该项目中散布着数百条SQL语句。我在我的计算机上设置了这个项目,并且能够很好地部署网站,并且使用了99%的网站而没有问题。不过我遇到了一个奇怪的情况,那就是我试图在网站上创建一个条目(这是一个基于政府的项目)。MySQL在程序尝试执行查询时引发异常:

SELECT d.id, ..., dol.weight, d.status
FROM DeliveryOrderEJB d, InbondEJB_DeliveryOrderEJB_link lnk 
LEFT JOIN DOLineEJB dol 
    ON dol.id=(
        SELECT MIN(dol2.id) 
        FROM DOLineEJB dol2 
        WHERE d.id=dol2.DeliveryOrderEJB_lines
    ) 
WHERE d.id=lnk.DeliveryOrderEJB_id 
AND lnk.InbondEJB_itNo='...' 
ORDER BY d.id
SELECT d.id, ..., dol.weight, d.status
FROM DeliveryOrderEJB d join
     InbondEJB_DeliveryOrderEJB_link lnk 
     on d.id=lnk.DeliveryOrderEJB_id left join
     DOLineEJB dol 
     ON dol.id=(
        SELECT MIN(dol2.id) 
        FROM DOLineEJB dol2 
        WHERE d.id=dol2.DeliveryOrderEJB_lines
     ) 
WHERE lnk.InbondEJB_itNo='...' 
ORDER BY d.id
它给我的例外是,
where子句中的未知列“d.id”

我感到困惑的是,为什么它在生产机器上运行良好,而这似乎是我的机器上唯一的一个故障。该列显然存在于DeliveryOrderEJB表中


谢谢大家!

失败是指嵌套子查询中的
d.id

ON dol.id=(
    SELECT MIN(dol2.id) 
    FROM DOLineEJB dol2 
    WHERE d.id=dol2.DeliveryOrderEJB_lines
) 
您可以修复该查询:

SELECT d.id, ..., dol.weight, d.status
FROM DeliveryOrderEJB d, InbondEJB_DeliveryOrderEJB_link lnk 
LEFT JOIN DOLineEJB dol 
    ON dol.id=(
        SELECT MIN(dol2.id) 
        FROM DOLineEJB dol2 
        WHERE d.id=dol2.DeliveryOrderEJB_lines
    ) 
WHERE d.id=lnk.DeliveryOrderEJB_id 
AND lnk.InbondEJB_itNo='...' 
ORDER BY d.id
SELECT d.id, ..., dol.weight, d.status
FROM DeliveryOrderEJB d join
     InbondEJB_DeliveryOrderEJB_link lnk 
     on d.id=lnk.DeliveryOrderEJB_id left join
     DOLineEJB dol 
     ON dol.id=(
        SELECT MIN(dol2.id) 
        FROM DOLineEJB dol2 
        WHERE d.id=dol2.DeliveryOrderEJB_lines
     ) 
WHERE lnk.InbondEJB_itNo='...' 
ORDER BY d.id
我相信问题是因为机器上有不同版本的MySQL。MySQL在5.0版前后更改了
的语义