|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre confirmé
![]() Inscription : août 2003 Messages : 354 ![]() |
Hello!
XMLRAD2006, Delphi et base de données Oracle. J'utilise dans mon code un TDacDatabase.ForceCommit (et cela pour diverses raisons). Je viens de remarque que (apparament???) pour de oracle 8 ou 9 (et pas en 10, la ca marche) apres cette instruction, plus aucune données n'est inserée, ou modifiée dans la base de données par l'application. Comme si le fait de faire un forceCommit engendrait le fait que plus aucune transaction ne soit possible sur la base ? Avez vous des infos à ce sujet ? Michael |
|
|
00
|
|
|
#2 |
|
Membre confirmé
![]() Inscription : août 2003 Messages : 354 ![]() |
Et je ne comprends d'autant moins que le forcecommit est un "commit" classique d'un point de vue BDD (l'ado connection fait le commit meme si plusieurs transactions sont cascadées)....
J'ai ce phénomène sur 2 postes (chez moi et chez le client!) avec un client Oracle 9, aucune modif n'est appliquée sur la base meme celle faite durant la transaction du force commit. Et si je change simplement Forcecommit en commit ca marche normalement?? Le soucis c'est que je ne peux pas laisser le commit simple, car sous MSSQL, j'ai un deadlock du à une autre transcation en parallèle... Oracle s'en fiche et ne vérouille pas, MSSQL si. C'est pour cela que j'ai forcé le commit. Je vais qd meme pas tester si je suis en Oracle ou MSSQL et faire Commit ou ForceCommit selon! Bref, je suis perplexe... il y a surement autrechose, mais je ne vois pas quoi! Le RefCountTransaction qui se passe mal, mais pkoi que dans ce cas ?... Je vois pas de lien .... Un beginTrans qui ne serait plus jamais effectuée ?? |
|
|
00
|
|
|
#3 |
|
Membre confirmé
![]() Inscription : août 2003 Messages : 354 ![]() |
Desole mm si ca n'inspire personne je reviens avec ca, mais ca m'inquiete vraiment!
Apres etre passé par le ForceCommit, plus aucune modification n'est possible sur l'ensemble de ma base de données!! Et en plus de ca, sur toutes les lignes sur lesquels j'essai de faire une modif, il y reste un verrou ou qqch qui bloque toute les autres appli qui tenterai de modifier plus tard la meme ligne.... il ne me reste plus qu'a faire un iisreset.... Je comprends vraiment pas surtout que sur mon poste ca fonctionne nikel avec le forcecommit et cela sur la meme base. Les seules différences visibles sont la version du client Oracle (10 chez moi et 9 sur le serveur) et windows (XP chez moi et 2003 sur le serveur)... |
|
|
00
|
|
|
#4 | ||||||
|
Membre confirmé
![]() Inscription : août 2003 Messages : 354 ![]() |
C'est la dernière, c'est promis.... les prochaines c'est pour une réponse!
Je m'en sors finalement en retirant un DataBase.StartTranscation un peu plus haut dans mon code.... ne me demandez pas pkoi il est la celui-la. Du coup le "ForceCommit" devient un "commit" normal et mon code fonctionne sous Oracle et sous MSSQL. Cool... mais bizard qd meme: Ca le fait pas: Code :
Code :
Code :
|
||||||
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() |
en général après un ForceCommit on fait un StartTransaction pour la suite du code sinon effectivement t'as des trucs bizarres.
le force commit c'est pour forcer le commit d'une transaction alors que tu es déjà a plusieurs niveaux d'imbrication des starttransactions. mais il faut redémarrer une transaction pour que le dépilement des commit se fasse correctement.
__________________
RDM Tout Est Relatif Rubrique XMLRAD: http://xmlrad.developpez.com FAQ XMLRAD: http://xmlrad.developpez.com/faq/ |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com