2
votes

We have application developed using PowerBuilder 6.0(Ingres as an backend). Application code was never updated since 2009. However suddenly it starts showing update error. Users are getting error message like 'Row Changes between retrieve and update' on attempt to save data. We have confirmed that original data is not even changed under database by any one during user’s attempt to save.

Application shows following error message.

Error message

Update failed.

Database error: -3: Row changed between retrieve and update.

No changes made to database.

Update os_sec1 set encrpt_pw='XXXXX' WHERE user_id ='Q0001 ' and USER_DEC = 'Mayur Patel__________' and last_pw_change = {ts'2012-03-12 13:27:28'}

We just noticed update statement's where cause have wrong values. [User Desc] field is showing value with extra space. We figure out that [User Decs] field having 40 char length and update statement showing total 40 char (Values + empty space). We do not know how application start considering extra space.

Other surprising part is, for some users application is working and for other it is showing error. Also all users are using Window 7.

Anyone have idea what could be the reason? Appreciate all inputs.

2

2 Answers

1
votes

Thanks for your all helps. Finally issue got fix. Root cause was different time zone for client and server. Ingres server was showing 10th March 2013 as Day light saving start time however Client machine’s Ingres client was showing 7th April 2013 as day light saving start time. This discrepancy was causing all issue. (used iizck tool to check time zone on server and client.)

Now, I have to check with Ingres to see if they have any patch available for 32 and 64 bit system. As a work around I have installed Ingres 9.2 client on user machines. (Please note use had Ingres 2.6 client installed)

0
votes

As you know "Row Changed between retrieve and update" means that when PowerBuilder went to update the row it detected that what is now in the database is different from what it retrieved. If you're sure that the data really isn't being changed by someone else, then I'd start looking at the database driver settings. Database drivers have settings for striping off extra spaces or leaving them there. If the settings got changed, it could explain the extra spaces. Also, if the settings were only changed on some users computers that might explain why only some are affected.