2010-02-15 8 views
1

J'ai une application qui exécute la requête MySQL suivante:MySQL requête fonctionne bien sur v4.1.22 mais ne fonctionne pas sur v5.x

  SELECT 402 AS user_id, 
       p.id AS perm_id, 
       p.name AS perm_name, 
       lc.business_division_id, 
       bd.name AS bd_name, 
       bd.current_cycle, bd.current_moon, 
       lc.name AS cycle_name, 
       lc.milestone_date, 
       lc.scorecard_date, 
       bdm.name AS meta_name, 
       bdm.value AS meta_value 
      FROM lc_vc_cg_353.business_division bd, 
       lc_vc_cg_353.business_division_meta bdm, 
       lc_vc_cg_353.lunar_cycle lc 
LEFT OUTER JOIN lc_vc_cg_353.permissions ps 
        ON ps.user_id = 402 AND ps.business_division_id = bd.id inner 
      join lc_vc_central.permission p 
        ON ((ps.privilege_id IS NOT null AND p.id = ps.privilege_id) 
         OR 
         (ps.privilege_id IS NULL AND p.id = 1024)) 
      WHERE 
       bd.active = 1 
        AND 
       bdm.business_division_id = bd.id 
        AND 
       lc.business_division_id = bd.id 
        AND 
       lc.id = bd.current_cycle 
     ORDER by bd.name asc; 

Le serveur de production fonctionne très bien et exécute MySQL v4.1.22 (Redhat), mais lorsque j'exécute la même requête sur une machine Windows exécutant MySQL v5.1.43-community, il affiche l'erreur suivante:

ERROR 1054 (42S22): Colonne inconnue 'bd.id' dans 'on clause'

Des idées sur ce que le problème pourrait être? Se pourrait-il que la syntaxe particulière ait été dépréciée dans les nouvelles versions de MySQL?

Toute aide serait grandement appréciée.

Répondre

0

J'ai corrigé cela en installant MySQL v4.1.22 sur la machine Windows.

1

Vous devez également vérifier que les schémas correspondent.

Est-ce que business_division a une colonne id sur le système Windows?

Je suppose que les noms de base de données (par exemple lc_vc_cg_353) correspondent également.

Je ne vois rien d'évident dans la syntaxe.

Questions connexes