![]() |
|
#1
|
|||
|
|||
|
Hi Jonathan,
nice to talk to you after a long time ! I would like to discuss minor problem which is following: User reports that number of records for replication is 1 but no replication will be processed after callinr Replicate(). When checking RPL$LOG table, one record still remains there. After deleting it everything works normally ? Could you explain how this situation can happen ? Thank you for any idea. With best regards Karel, YAMACO Software |
|
#2
|
|||
|
|||
|
Hi Karel,
Sorry for the slow reply! Most likely what happened is that it was a conflict. After a conflict has been detected and reported once, it is written to RPL$CONFLICTS, and from then on, nothing is done to it until the conflict is resolved in RPL$CONFLICTS. And so when replication starts, it says there is 1 row to replicate, but then CopyCat sees that it's a conflict, and so it does nothing. By deleting the row in RPL$LOG, you removed the conflict. You should check RPL$LOG in the other database, as there is probably a corresponding row with CONFLICT = 'Y'. If so, set CONFLICT = 'N' and it will be replicated. If you get a conflict again, the normal way to handle it is to set the RPL$CONFLICTS.CHOSEN_NODE field to the name of the node whose version of the record you want to keep. Then, next time you replicate, the row will be replicated. Or else, alternatively, you can implement the OnResolveConflict in order to resolve the conflict directly without ever writing it to RPL$CONFLICTS. Hope this helps!
__________________
Best regards, Jonathan Neve _______________ CopyCat - advanced Delphi components for database replication, supporting CodeGear Interbase, FirebirdSQL and MS SQL Server! CopyTiger - the ultimate database replication solution for CodeGear Interbase, FirebirdSQL and MS SQL Server! _______________ More information : http://www.microtec.fr/copycat |
![]() |
| Thread Tools | Search this Thread |
| Display Modes | |
|
|