4gl error: "rowid xxx not found for delete in partnum xxx, key x"
Posted in 1999
Topics: Connectivity: ESQL/C, 4GL & Embedded SQL, Server Administration
I am running Informix-SQL 5.1 UD2. I am getting the following error
(from online.log) when I try to update a certain record:
Rowid 0x186b06 not found for delete in partnum 10001c9, key 3
7ffff57c: 70f76d80 65180000 0a6c4c8f 30000e00 p.m.e... .1L.0...
Process Aborted Abnormally: pid-24419 user=303 us=80401e50 flags=101
Process Aborted Abnormally (critical section): pid-24419 user=303
flags=101
INFORMIX-OnLine entering ABORT mode!!!
-- Online Aborting -- us=804019f0, pid=20933, uid=200
INFORMIX-OnLine Stopped
Here are the details. I have a table which has several fields including
initial_time and resolved_time. The default value for initial_time is
obvious. The default for resolved_time is "1992-01-01 00:00". When
closing the record through a form, the resolved_time is changed to the
current time at which the record is closed. When entering the form, only
the open records (those with a resolved_time of 1992-01-01 00:00) should
be selected. I believe this is controlled by a 4gl program
(midlevel.4gl) which has a line that states,
return " mytable.resolved_time = \\"1992-01-01 00:00\\"" . (That's my
period. Miss DeLong would be proud of my grammatical prowess...)
When I open the form, a record with the resolved_time of "1998-12-31
21:56" is included with the selected records. When I try to change the
resolved_time field, either via the form or dbaccess, I get two error
codes, 246 and 107. The above error message is appended to online.log
and the database is taken offline. I am able to bring it back online
with little trouble but the offending record still shows up when it
should not.
I checked out the error messages and ran tbcheck on the table and its
indexes but no errors were discovered. I have been trying to solve this
since, well, since early January. I have not been trained in Informix.
I have the proverbial fool for a teacher, as I am self-taught. I may
(it is quite probable) be missing the obvious. I have searched DejaNews
for posts concerning a similar problem but I have not found ANY posts
dealing with it. Any and all (well, all legitimate and potentially
helpful) replies are welcome.
Just because...try dropping the indexes and rebuilding them. Also NEVER delete using rowid...Can give bizarre results. If you need to I would... a) identify the offending record using the primary key of the table. b) drop the indexes. c) run a SQL statement to remove the record using the primary key. d) re-create the indexes. This solves you problem (NOW) but doesn't explain why process which I'm assuming used to work no longer does. (Assuming no programatic changes or engine changes occurred right before it stopped working). Anyway let me know what you come up with. Rob Vorbroker robv@vorbroker.com
John-Thomas Richards wrote: > > I am running Informix-SQL 5.1 UD2. I am getting the following error > (from online.log) when I try to update a certain record: > Rowid 0x186b06 not found for delete in partnum 10001c9, key 3 > 7ffff57c: 70f76d80 65180000 0a6c4c8f 30000e00 p.m.e... .1L.0... > Process Aborted Abnormally: pid-24419 user=303 us=80401e50 flags=101 > Process Aborted Abnormally (critical section): pid-24419 user=303 > flags=101 > INFORMIX-OnLine entering ABORT mode!!! > -- Online Aborting -- us=804019f0, pid=20933, uid=200 > INFORMIX-OnLine Stopped Your index containing the resolved_time column is corrupt. OL5.01 had many problems with its tbcheck utility not catching things (actually tbcheck was not completely shaken out until 5.06 or 5.07). Just drop the offending index(es) and rebuild them and all should be well. Is this an unlogged database? Such are highly prone to trashing indexes when the engine crashes or the machine is shutdown while the engine is still online, so I'm not surprised. Art S. Kagel
"Art S. Kagel" wrote: > > John-Thomas Richards wrote: > > > > I am running Informix-SQL 5.1 UD2. I am getting the following error > > (from online.log) when I try to update a certain record: > > Rowid 0x186b06 not found for delete in partnum 10001c9, key 3 > > 7ffff57c: 70f76d80 65180000 0a6c4c8f 30000e00 p.m.e... .1L.0... > > Process Aborted Abnormally: pid-24419 user=303 us=80401e50 flags=101 > > Process Aborted Abnormally (critical section): pid-24419 user=303 > > flags=101 > > INFORMIX-OnLine entering ABORT mode!!! > > -- Online Aborting -- us=804019f0, pid=20933, uid=200 > > INFORMIX-OnLine Stopped > > Your index containing the resolved_time column is corrupt. OL5.01 had > many problems with its tbcheck utility not catching things (actually > tbcheck was not completely shaken out until 5.06 or 5.07). Just drop > the offending index(es) and rebuild them and all should be well. Is > this an unlogged database? Such are highly prone to trashing indexes > when the engine crashes or the machine is shutdown while the engine is > still online, so I'm not surprised. > > Art S. Kagel I did as you suggested and the problem is solved. Thank you.
"robertb..vorbroker" wrote: > > Just because...try dropping the indexes and rebuilding them. > Also NEVER delete using rowid...Can give bizarre results. > > If you need to I would... > a) identify the offending record using the primary key of the table. > b) drop the indexes. > c) run a SQL statement to remove the record using the primary key. > d) re-create the indexes. > > This solves you problem (NOW) but doesn't explain why process which I'm > assuming used to work no longer does. (Assuming no programatic changes or > engine changes occurred right before it stopped working). > > Anyway let me know what you come up with. > > Rob Vorbroker > robv@vorbroker.com Dropping the index and recreating it took care of the problem. Thank you.