|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : juillet 2008 Messages : 3 ![]() |
bonjour,
ayant du mal à trouver de la documentation sur la (bonne) utilisation du commit/rollback de mysql via talent, j'aurai besoin de votre aide Mon job : vider une table mysql, insérer les données à partir d'un fichier délimité dans cette table. Donc je crée la connexion à la base mysql. Connexion que j'utilise dans chacun des composants. Si cette connexion n'est pas valide, une petite messagebox. Un composant pour lire le fichier délimité, un composant pour l'insertion dans la base de données composant configuré pour qu'il me vide la table avant de faire les insert J'ai mis le composant rollback pour qu'il fasse un rollback à la première erreur, et le commit pour qu'il le fasse si tout se passe bien. Si le fichier délimité est valide, aucun problème les données sont insérées. Par contre si j'insère une erreur, les données jusqu'à l'erreur sont insérées et le rollback ne s'effectue pas. Est-ce que quelqu'un pourrait m'expliquer où je fais une erreur. Fichier joint : la capture de mon job |
|
|
00
|
|
|
#2 |
|
Candidat au titre de Membre du Club
![]() Inscription : avril 2008 Messages : 22 ![]() |
Bonjour,
pour utiliser le rollback/commit je pense que tu devrais mettre ton commit aussi sur ton composant tMysqlOutput. Et le relier avec le OnComponentOk. Penses à cocher close connection aussi (si ce n'est pas deja fait). |
|
|
00
|
|
|
#3 |
|
Membre Expert
![]() Benoit DurandConsultant en Business Intelligence Freelance Inscription : mars 2005 Messages : 819 ![]() |
Dans les paramètres de ton output tu choisis bien d'utiliser la connection définie avant ?
|
|
|
00
|
|
|
#4 | |
|
Invité de passage
![]() Inscription : juillet 2008 Messages : 3 ![]() |
J'ai essayé avec le commit sur l'output ça ne change rien. D'ailleurs d'après ce que j'ai pu lire il faut mieux éviter de le mettre à cet endroit.
Sinon pour le close connection il est coché par défaut Citation:
Je continue mon investigation |
|
|
|
00
|
|
|
#5 |
|
Nouveau Membre du Club
![]() Inscription : juin 2006 Messages : 109 ![]() |
Bonjour,
J'utilise les commit et rollback dans beaucoup de job et ils fonctionnent bien, c'est pour postgresSql moi par contre. Dans mon job, je met : un TpostgresConnection puis je le lie à mon inputSql où je coche "use an existing connection", puis le passe par un tmap qui sort dans un PostgresOuput où je coche "use an existing connection". et c'est en partant de cet ouput que je mets si ok alors commit si erreur alors rollback. Et dans mon commit et rollback "close connection" est coché. Je t'envoie une image de mon job si ça peut t'aider. Est ce que tu a fait le test d'enlever le "tcommit" et de voir si tes données sont quand même insérée (avec l'utilisation de "use an existing connection")? Car je sais que des fois j'oubliai le tcomit et après je ne comprenais pas pourquoi mes données ne s' insérait pas. ça te permettrait de vérifier que ton objet Connection fonctionne bien... Normalement sans objet d commit il ne doit pas commiter... |
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Inscription : juillet 2008 Messages : 3 ![]() |
Comme prévu, c'était bien une bêtise de ma part. Le rollback ne fonctionne pas sur les tables de type MyIsam, il faut les passer en InnoDb.
Merci quand même pour votre aide |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com