Précédent   Forum des professionnels en informatique > Bases de données > DB2
DB2 Forum d'entraide technique sur la base de données DB2. Voir aussi -> Rubrique DB2
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/07/2011, 17h59   #1
Invité de passage
 
Inscription : juillet 2011
Messages : 5
Détails du profil
Informations forums :
Inscription : juillet 2011
Messages : 5
Points : 1
Points : 1
Par défaut requete sql pas executée

Bonjour,

je poste ici car j'ai un soucis de taille que je ne comprend pas.

Ma situation:
je suis nouveau dans mon entreprise et je suis en charge de maintenir l'intranet.
L'intranet en PHP pioche de temps en temps des données dans une base de données DB2 hébergée sur un AS400.
Le driver utilisé est iSeriesAccess-5.4.0-1.6.i386 sur un serveur Debian.

Tout marche bien il n'y a pas de soucis.

Le problème c'est que je cherche a faire un serveur de test équivalant à mon serveur de production.

J'ai donc tout installer et tout semble marcher.
Par contre je rencontre un soucis lors de CERTAINES requêtes.

Les requêtes basiques marchent très bien mais quand on gonfle un peu la requête cela met une page blanche.

Aucun message d'erreur.

Je tiens à préciser que la requête marche sur mon serveur de production. Le code est identique.

J'ai configurer le driver ODBC de la même façon que sur le serveur de production (je pense).

je ne vois donc pas pourquoi certaines requêtes marchent et d'autres pas.

Merci d'avance.

emilien.
emilien-c est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2011, 00h04   #2
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 638
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 638
Points : 2 630
Points : 2 630
Bonjour,

oué enfin là vous dites : j'ai un problème, je ne sais pas ce que c'est, je ne peux pas l'expliquer donc demerdez-vous pour me trouver une solution.

Et comment qu'on fait nous ?

edit: donc choppez les requêtes qui ne marchent pas et essayé de trouver des logs quelque part, quittes à mettre en mode debug votre applicatif pour essayer de remonter à la source.

Par exemple sur les passage que vous suspecté, loggez l'heure de début d'execution, la fin (s'il y en a une) les éventuels code SQL retour, etc.
punkoff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2011, 09h16   #3
Invité de passage
 
Inscription : juillet 2011
Messages : 5
Détails du profil
Informations forums :
Inscription : juillet 2011
Messages : 5
Points : 1
Points : 1
Bonjour,

en fait j'ai essayé de debugger mon code en écrivant dans un fichier les étapes clés. Il s'avère que le code bloque sur un while

mon code est le suivant :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<blockquote> $req = "select 
    t1.numvag, t1.libvag, 
    t2.numsup, 
    t3.seqsup, t3.numliv, t3.codpro, t3.ds1pro, t3.uvccde, t3.uvcliv, t3.zonsts, t3.allsts, t3.dplsts, t3.nivsts, t3.zonpic, t3.allpic, t3.dplpic, t3.nivpic, 
    t4.codprn, 
    t5.ds1pro as libprn, 
    t6.qtecol, 
    t7.codcli, t7.codtra, t7.refliv, t7.datliv, t7.msgliv1, t7.msgliv2, 
    t8.nobl, t8.nomcli, t8.prenomcli, t8.adr1, t8.adr2, t8.adr3, t8.cp, t8.ville, t8.pays, t8.tel1, t8.tel2, t8.magasin, t8.codepays, 
    t9.cirpic, 
    t10.nomcli as codcli2 </blockquote><blockquote>  from (((((((((fge50.gevag as t1 left join fge50.gesupe as t2 on t1.numvag=t2.numvag) 
    left join fge50.gesupd as t3 on t2.numsup=t3.numsup and t2.snusup=t3.snusup) 
    left join fge50.geprnd as t4 on t3.codpro=t4.codpro and t3.codact=t4.codact and t3.codprn=t4.codprn)
    left join fge50.geprne as t5 on t4.codprn=t5.codprn and t4.codact=t5.codact )
    left join distrimag.genomenclature as t6 on t3.codpro=t6.codpro)
    left join fge50.gelive as t7 on t3.numliv=t7.numliv and t3.snuliv=t7.snuliv ) 
    left join distrimag.adrclient as t8 on ( case when substr(t7.msgliv1, 1, 1)<>'#' then 0 when substr(t7.msgliv1, 8, 1)<>'#' then substr(t7.msgliv1, 2, 7) else substr(t7.msgliv1, 2, 6) end)=t8.nobl) 
    left join fge50.gepic as t9 on t3.codpro=t9.codpro and t3.codact=t9.codact) 
    left join fge50.gecli as t10 on t7.codcli=t10.codcli and t3.codact=t10.codact)
    where t1.numvag=11185040";</blockquote>$result = odbc( _AS400_ , $req );
while( $row = odbc_fetch_array( $result ) ){
 
.....
 
}
Cette requête retourne une ligne (testé) mais le code ne rentre pas dans le while.

J'ai mis des log avant, dedans et après le while et je m’aperçois que le code s'arrête avant d'entrer dans le while.

J'espère que je vous ai apporté plus d'éléments.

Merci d'avance.
emilien-c est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2011, 09h50   #4
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 638
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 638
Points : 2 630
Points : 2 630
Mais votre result set est vide ?
La requête s'execute bien (dans votre code) ?
punkoff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2011, 10h37   #5
Invité de passage
 
Inscription : juillet 2011
Messages : 5
Détails du profil
Informations forums :
Inscription : juillet 2011
Messages : 5
Points : 1
Points : 1
Le résultset donne : Resource id #90

Or apparemment s'il y a une erreur à l’exécution je devrai avoir false et doit renvoyer une ressource si elle marche.

De plus j'ai tester la même requête en dur sur mon interface de l'AS400 et cela me retourne bien une ligne.

La même requête marche aussi sur mon autre serveur web.
emilien-c est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2011, 10h50   #6
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 638
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 638
Points : 2 630
Points : 2 630
Je ne comprend pas ce que veux dire : Resource id #90

Ce que je cherche à comprendre c'est de savoir si votre requete s'execute bien => oui / non ?

Si oui, le problème n'a strictement rien à voir avec l'as400 ni avec votre driver odbc/jdbc.
punkoff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2011, 11h05   #7
Invité de passage
 
Inscription : juillet 2011
Messages : 5
Détails du profil
Informations forums :
Inscription : juillet 2011
Messages : 5
Points : 1
Points : 1
Oui la requête s'exécute bien.
Le problème se situe au niveau du traitement du resultset je pense.
emilien-c est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2011, 11h07   #8
Membre chevronné
 
Avatar de bernard59139
 
Administrateur de base de données
Inscription : octobre 2006
Messages : 503
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Administrateur de base de données

Informations forums :
Inscription : octobre 2006
Messages : 503
Points : 688
Points : 688
je pense que ce n'est pas un probleme db2.
++
bernard59139 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2011, 09h09   #9
Invité de passage
 
Inscription : juillet 2011
Messages : 5
Détails du profil
Informations forums :
Inscription : juillet 2011
Messages : 5
Points : 1
Points : 1
Bonjour,

je reviens vers vous pour vous dire que j'ai trouvé la solution. Elle ne venait pas de db2 mais de php qui interprétait mal le resultset. J'ai donc du me débrouiller autrement. Je clôture, merci à ceux qui ont pris de leur temps pour m'aider.
emilien-c est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h16.


 
 
 
 
Partenaires

Hébergement Web