Je suis decu :-( [ Desole pour les accents mais
j'utilise un clavier qwerty ]
Apparemment l'attribut RaiseError bien que positionne au niveau du
database handle a une influence sur un statement prepare. Ce qui veut
donc dire que si le statement a ete prepare une premiere fois et que le
RaiseError etait positionne il n'est plus possible de l'inhiber
contrairement a ce que je pensais. Bien sur le cas ou la fonction
prepare_cached est utilisee pour optimiser le prepare tombe dans le meme
cas.
Pour tester tout ce que je raconte voici un exemple :
use DBI;
use constant FIRST=>1;
use constant PREPARE_CACHED=>1;
use constant CREER_TABLE=>0;
print "START\n";
print "Variable FISRT positionnee\n" if FIRST;
print "Variable PREPARE_CACHED positionnee\n" if PREPARE_CACHED;
$dbh= DBI->connect("dbi:SQLite:dbname=./storage.db",undef,undef,{
RaiseError => 1, AutoCommit => 1 });
$dbh->do('CREATE TABLE waitforforce2(id text,loginid text)') if CREER_TABLE;
$sth_set_wait_for_force=$dbh->prepare("insert into
waitforforce(id,loginid) values (?,?)") if FIRST && !PREPARE_CACHED;
$sth_set_wait_for_force=$dbh->prepare_cached("insert into
waitforforce(id,loginid) values (?,?)") if PREPARE_CACHED && FIRST;{
local $dbh->{RaiseError};
$sth_set_wait_for_force=$dbh->prepare("insert into
waitforforce(id,loginid) values (?,?)") if !FIRST && !PREPARE_CACHED;
$sth_set_wait_for_force=$dbh->prepare_cached("insert into
waitforforce(id,loginid) values (?,?)") if PREPARE_CACHED;
$sth_set_wait_for_force->execute(qw/0610208595 0610207980/);
}
print "END\n";
__END__;
Je vous laisse jouer avec les variables pour verifier le comportement.
Si vous avez rencontre un comportement different ca m'interesse.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Paul Gaborit
À (at) Tue, 01 Aug 2006 13:38:40 +0200, Scetbon Cyril écrivait (wrote):
Apparemment l'attribut RaiseError bien que positionne au niveau du database handle a une influence sur un statement prepare. Ce qui veut donc dire que si le statement a ete prepare une premiere fois et que le RaiseError etait positionne il n'est plus possible de l'inhiber contrairement a ce que je pensais. Bien sur le cas ou la fonction prepare_cached est utilisee pour optimiser le prepare tombe dans le meme cas.
L'attribut 'RaiseError' existe dans tous les types de DBI. Il existe donc aussi pour un 'statement'. Il est recopié du 'dbh' lors de la création du 'statement'. Ensuite, effectivement, les modifs faites sur celui du 'dbh' ne l'affecte plus. Mais rien n'empêche de le modifier directement (ou d'utiliser 'set_err').
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
À (at) Tue, 01 Aug 2006 13:38:40 +0200,
Scetbon Cyril <cyril.scetbon@free.fr> écrivait (wrote):
Apparemment l'attribut RaiseError bien que positionne au niveau du
database handle a une influence sur un statement prepare. Ce qui veut
donc dire que si le statement a ete prepare une premiere fois et que
le RaiseError etait positionne il n'est plus possible de l'inhiber
contrairement a ce que je pensais. Bien sur le cas ou la fonction
prepare_cached est utilisee pour optimiser le prepare tombe dans le
meme cas.
L'attribut 'RaiseError' existe dans tous les types de DBI. Il existe
donc aussi pour un 'statement'. Il est recopié du 'dbh' lors de la
création du 'statement'. Ensuite, effectivement, les modifs faites sur
celui du 'dbh' ne l'affecte plus. Mais rien n'empêche de le modifier
directement (ou d'utiliser 'set_err').
--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
À (at) Tue, 01 Aug 2006 13:38:40 +0200, Scetbon Cyril écrivait (wrote):
Apparemment l'attribut RaiseError bien que positionne au niveau du database handle a une influence sur un statement prepare. Ce qui veut donc dire que si le statement a ete prepare une premiere fois et que le RaiseError etait positionne il n'est plus possible de l'inhiber contrairement a ce que je pensais. Bien sur le cas ou la fonction prepare_cached est utilisee pour optimiser le prepare tombe dans le meme cas.
L'attribut 'RaiseError' existe dans tous les types de DBI. Il existe donc aussi pour un 'statement'. Il est recopié du 'dbh' lors de la création du 'statement'. Ensuite, effectivement, les modifs faites sur celui du 'dbh' ne l'affecte plus. Mais rien n'empêche de le modifier directement (ou d'utiliser 'set_err').
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
Srand
Paul Gaborit wrote:
L'attribut 'RaiseError' existe dans tous les types de DBI. Il existe donc aussi pour un 'statement'. Il est recopié du 'dbh' lors de la création du 'statement'. Ensuite, effectivement, les modifs faites sur celui du 'dbh' ne l'affecte plus. Mais rien n'empêche de le modifier directement (ou d'utiliser 'set_err').
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
Effectivement, on en apprend tous les jours :-) Merci du renseignement.
Paul Gaborit wrote:
L'attribut 'RaiseError' existe dans tous les types de DBI. Il existe
donc aussi pour un 'statement'. Il est recopié du 'dbh' lors de la
création du 'statement'. Ensuite, effectivement, les modifs faites sur
celui du 'dbh' ne l'affecte plus. Mais rien n'empêche de le modifier
directement (ou d'utiliser 'set_err').
--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
Effectivement, on en apprend tous les jours :-)
Merci du renseignement.
L'attribut 'RaiseError' existe dans tous les types de DBI. Il existe donc aussi pour un 'statement'. Il est recopié du 'dbh' lors de la création du 'statement'. Ensuite, effectivement, les modifs faites sur celui du 'dbh' ne l'affecte plus. Mais rien n'empêche de le modifier directement (ou d'utiliser 'set_err').
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
Effectivement, on en apprend tous les jours :-) Merci du renseignement.
Srand
Srand wrote:
Paul Gaborit wrote:
L'attribut 'RaiseError' existe dans tous les types de DBI. Il existe donc aussi pour un 'statement'. Il est recopié du 'dbh' lors de la création du 'statement'. Ensuite, effectivement, les modifs faites sur celui du 'dbh' ne l'affecte plus. Mais rien n'empêche de le modifier directement (ou d'utiliser 'set_err').
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
Effectivement, on en apprend tous les jours :-) Merci du renseignement.
Est-ce vrai aussi pour l'attribut AutoCommit ? car jusqu'a present j'utilisais la syntaxe $dbh->{AutoCommit}=0 pour desactiver le commit mais mais statements sont prepares bien avant.
Merci
Srand wrote:
Paul Gaborit wrote:
L'attribut 'RaiseError' existe dans tous les types de DBI. Il existe
donc aussi pour un 'statement'. Il est recopié du 'dbh' lors de la
création du 'statement'. Ensuite, effectivement, les modifs faites sur
celui du 'dbh' ne l'affecte plus. Mais rien n'empêche de le modifier
directement (ou d'utiliser 'set_err').
--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
Effectivement, on en apprend tous les jours :-)
Merci du renseignement.
Est-ce vrai aussi pour l'attribut AutoCommit ? car jusqu'a present
j'utilisais la syntaxe $dbh->{AutoCommit}=0 pour desactiver le commit
mais mais statements sont prepares bien avant.
L'attribut 'RaiseError' existe dans tous les types de DBI. Il existe donc aussi pour un 'statement'. Il est recopié du 'dbh' lors de la création du 'statement'. Ensuite, effectivement, les modifs faites sur celui du 'dbh' ne l'affecte plus. Mais rien n'empêche de le modifier directement (ou d'utiliser 'set_err').
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
Effectivement, on en apprend tous les jours :-) Merci du renseignement.
Est-ce vrai aussi pour l'attribut AutoCommit ? car jusqu'a present j'utilisais la syntaxe $dbh->{AutoCommit}=0 pour desactiver le commit mais mais statements sont prepares bien avant.
Merci
Paul Gaborit
À (at) 1 Aug 2006 05:21:56 -0700, "Srand" écrivait (wrote):
Effectivement, on en apprend tous les jours :-)
En fait, tout cela est dans la doc de DBI.
Lorsque quelque chose est spécifique à un type, la doc utilise $dbh, $sth, etc. pour identifier le type précis d'objet. Lorsque c'est quelque chose de générique, c'est $h qui est utilisé comme objet générique.
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
À (at) 1 Aug 2006 05:21:56 -0700,
"Srand" <cyril.scetbon@free.fr> écrivait (wrote):
Effectivement, on en apprend tous les jours :-)
En fait, tout cela est dans la doc de DBI.
Lorsque quelque chose est spécifique à un type, la doc utilise $dbh,
$sth, etc. pour identifier le type précis d'objet. Lorsque c'est
quelque chose de générique, c'est $h qui est utilisé comme objet
générique.
--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
À (at) 1 Aug 2006 05:21:56 -0700, "Srand" écrivait (wrote):
Effectivement, on en apprend tous les jours :-)
En fait, tout cela est dans la doc de DBI.
Lorsque quelque chose est spécifique à un type, la doc utilise $dbh, $sth, etc. pour identifier le type précis d'objet. Lorsque c'est quelque chose de générique, c'est $h qui est utilisé comme objet générique.
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
Srand
Srand wrote:
Srand wrote:
Paul Gaborit wrote:
L'attribut 'RaiseError' existe dans tous les types de DBI. Il existe donc aussi pour un 'statement'. Il est recopié du 'dbh' lors de la création du 'statement'. Ensuite, effectivement, les modifs faites sur celui du 'dbh' ne l'affecte plus. Mais rien n'empêche de le modifier directement (ou d'utiliser 'set_err').
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
Effectivement, on en apprend tous les jours :-) Merci du renseignement.
Est-ce vrai aussi pour l'attribut AutoCommit ? car jusqu'a present j'utilisais la syntaxe $dbh->{AutoCommit}=0 pour desactiver le commit mais mais statements sont prepares bien avant.
Merci
J'ai trouve ma reponse avec un petit test.pl :-) En fait l'attribut AutoCommit est general
Srand wrote:
Srand wrote:
Paul Gaborit wrote:
L'attribut 'RaiseError' existe dans tous les types de DBI. Il existe
donc aussi pour un 'statement'. Il est recopié du 'dbh' lors de la
création du 'statement'. Ensuite, effectivement, les modifs faites sur
celui du 'dbh' ne l'affecte plus. Mais rien n'empêche de le modifier
directement (ou d'utiliser 'set_err').
--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
Effectivement, on en apprend tous les jours :-)
Merci du renseignement.
Est-ce vrai aussi pour l'attribut AutoCommit ? car jusqu'a present
j'utilisais la syntaxe $dbh->{AutoCommit}=0 pour desactiver le commit
mais mais statements sont prepares bien avant.
Merci
J'ai trouve ma reponse avec un petit test.pl :-)
En fait l'attribut AutoCommit est general
L'attribut 'RaiseError' existe dans tous les types de DBI. Il existe donc aussi pour un 'statement'. Il est recopié du 'dbh' lors de la création du 'statement'. Ensuite, effectivement, les modifs faites sur celui du 'dbh' ne l'affecte plus. Mais rien n'empêche de le modifier directement (ou d'utiliser 'set_err').
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
Effectivement, on en apprend tous les jours :-) Merci du renseignement.
Est-ce vrai aussi pour l'attribut AutoCommit ? car jusqu'a present j'utilisais la syntaxe $dbh->{AutoCommit}=0 pour desactiver le commit mais mais statements sont prepares bien avant.
Merci
J'ai trouve ma reponse avec un petit test.pl :-) En fait l'attribut AutoCommit est general
Paul Gaborit
À (at) 1 Aug 2006 05:35:56 -0700, "Srand" écrivait (wrote):
Est-ce vrai aussi pour l'attribut AutoCommit ? car jusqu'a present j'utilisais la syntaxe $dbh->{AutoCommit}=0 pour desactiver le commit mais mais statements sont prepares bien avant.
Pour le savoir, lisez la doc de DBI. Si vous y trouvez "$h->{AutoCommit}", c'est générique. Si vous ne trouvez que "$dbh->{AutoCommit}", ça ne marche qu'avec un "$dbh". Si c'est "$sth..." alors c'est pour un "$sth". Etc.
PS: la traduction française de la doc de DBI est en cours. Je l'attends depuis 4 ans... ;-)
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
À (at) 1 Aug 2006 05:35:56 -0700,
"Srand" <cyril.scetbon@free.fr> écrivait (wrote):
Est-ce vrai aussi pour l'attribut AutoCommit ? car jusqu'a present
j'utilisais la syntaxe $dbh->{AutoCommit}=0 pour desactiver le commit
mais mais statements sont prepares bien avant.
Pour le savoir, lisez la doc de DBI. Si vous y trouvez
"$h->{AutoCommit}", c'est générique. Si vous ne trouvez que
"$dbh->{AutoCommit}", ça ne marche qu'avec un "$dbh". Si c'est
"$sth..." alors c'est pour un "$sth". Etc.
PS: la traduction française de la doc de DBI est en cours. Je
l'attends depuis 4 ans... ;-)
--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
À (at) 1 Aug 2006 05:35:56 -0700, "Srand" écrivait (wrote):
Est-ce vrai aussi pour l'attribut AutoCommit ? car jusqu'a present j'utilisais la syntaxe $dbh->{AutoCommit}=0 pour desactiver le commit mais mais statements sont prepares bien avant.
Pour le savoir, lisez la doc de DBI. Si vous y trouvez "$h->{AutoCommit}", c'est générique. Si vous ne trouvez que "$dbh->{AutoCommit}", ça ne marche qu'avec un "$dbh". Si c'est "$sth..." alors c'est pour un "$sth". Etc.
PS: la traduction française de la doc de DBI est en cours. Je l'attends depuis 4 ans... ;-)
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
Srand
Paul Gaborit wrote:
À (at) 1 Aug 2006 05:35:56 -0700, "Srand" écrivait (wrote):
Est-ce vrai aussi pour l'attribut AutoCommit ? car jusqu'a present j'utilisais la syntaxe $dbh->{AutoCommit}=0 pour desactiver le commit mais mais statements sont prepares bien avant.
Pour le savoir, lisez la doc de DBI. Si vous y trouvez "$h->{AutoCommit}", c'est générique. Si vous ne trouvez que "$dbh->{AutoCommit}", ça ne marche qu'avec un "$dbh". Si c'est "$sth..." alors c'est pour un "$sth". Etc.
PS: la traduction française de la doc de DBI est en cours. Je l'attends depuis 4 ans... ;-)
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
Cela ne me derange pas de lire la doc en VO. On ne sait jamais si lors de la traduction certaines parties n'ont ete tronquees. Par contre je n'avais pas note la ligne suivante :
$h Any of the handle types above ($dbh, $sth, or $drh)
ce qui repond a mes questions.
Et encore merci.
Paul Gaborit wrote:
À (at) 1 Aug 2006 05:35:56 -0700,
"Srand" <cyril.scetbon@free.fr> écrivait (wrote):
Est-ce vrai aussi pour l'attribut AutoCommit ? car jusqu'a present
j'utilisais la syntaxe $dbh->{AutoCommit}=0 pour desactiver le commit
mais mais statements sont prepares bien avant.
Pour le savoir, lisez la doc de DBI. Si vous y trouvez
"$h->{AutoCommit}", c'est générique. Si vous ne trouvez que
"$dbh->{AutoCommit}", ça ne marche qu'avec un "$dbh". Si c'est
"$sth..." alors c'est pour un "$sth". Etc.
PS: la traduction française de la doc de DBI est en cours. Je
l'attends depuis 4 ans... ;-)
--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
Cela ne me derange pas de lire la doc en VO. On ne sait jamais si lors
de la traduction certaines parties n'ont ete tronquees. Par contre je
n'avais pas note la ligne suivante :
$h Any of the handle types above ($dbh, $sth, or $drh)
À (at) 1 Aug 2006 05:35:56 -0700, "Srand" écrivait (wrote):
Est-ce vrai aussi pour l'attribut AutoCommit ? car jusqu'a present j'utilisais la syntaxe $dbh->{AutoCommit}=0 pour desactiver le commit mais mais statements sont prepares bien avant.
Pour le savoir, lisez la doc de DBI. Si vous y trouvez "$h->{AutoCommit}", c'est générique. Si vous ne trouvez que "$dbh->{AutoCommit}", ça ne marche qu'avec un "$dbh". Si c'est "$sth..." alors c'est pour un "$sth". Etc.
PS: la traduction française de la doc de DBI est en cours. Je l'attends depuis 4 ans... ;-)
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
Cela ne me derange pas de lire la doc en VO. On ne sait jamais si lors de la traduction certaines parties n'ont ete tronquees. Par contre je n'avais pas note la ligne suivante :
$h Any of the handle types above ($dbh, $sth, or $drh)
ce qui repond a mes questions.
Et encore merci.
Paul Gaborit
À (at) 1 Aug 2006 06:21:18 -0700, "Srand" écrivait (wrote):
Cela ne me derange pas de lire la doc en VO.
Ok.
On ne sait jamais si lors de la traduction certaines parties n'ont ete tronquees.
Et le service qualité, à quoi qu'il sert ? ;-) Pour toutes les traductions que je diffuse, je vérifie une bonne partie des choses dont au minimum la comparaison du nombre de paragraphes entre l'original et la traduction....
Mais pour DBI la question ne se pose pas puisque le traduction n'existe pas encore. À la décharge du gentil traducteur bénévole qui peine à finir le boulot, on peut expliquer que la doc de DBI est énorme (presque aussi grosse que perlfunc !).
Par contre je n'avais pas note la ligne suivante :
$h Any of the handle types above ($dbh, $sth, or $drh)
ce qui repond a mes questions.
Et voila.
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
À (at) 1 Aug 2006 06:21:18 -0700,
"Srand" <cyril.scetbon@free.fr> écrivait (wrote):
Cela ne me derange pas de lire la doc en VO.
Ok.
On ne sait jamais si lors de la traduction certaines parties n'ont
ete tronquees.
Et le service qualité, à quoi qu'il sert ? ;-) Pour toutes les
traductions que je diffuse, je vérifie une bonne partie des choses
dont au minimum la comparaison du nombre de paragraphes entre
l'original et la traduction....
Mais pour DBI la question ne se pose pas puisque le traduction
n'existe pas encore. À la décharge du gentil traducteur bénévole qui
peine à finir le boulot, on peut expliquer que la doc de DBI est
énorme (presque aussi grosse que perlfunc !).
Par contre je n'avais pas note la ligne suivante :
$h Any of the handle types above ($dbh, $sth, or $drh)
ce qui repond a mes questions.
Et voila.
--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
À (at) 1 Aug 2006 06:21:18 -0700, "Srand" écrivait (wrote):
Cela ne me derange pas de lire la doc en VO.
Ok.
On ne sait jamais si lors de la traduction certaines parties n'ont ete tronquees.
Et le service qualité, à quoi qu'il sert ? ;-) Pour toutes les traductions que je diffuse, je vérifie une bonne partie des choses dont au minimum la comparaison du nombre de paragraphes entre l'original et la traduction....
Mais pour DBI la question ne se pose pas puisque le traduction n'existe pas encore. À la décharge du gentil traducteur bénévole qui peine à finir le boulot, on peut expliquer que la doc de DBI est énorme (presque aussi grosse que perlfunc !).
Par contre je n'avais pas note la ligne suivante :
$h Any of the handle types above ($dbh, $sth, or $drh)
ce qui repond a mes questions.
Et voila.
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>