Re: Strange error with date field (Online 5.01)
Posted in 1996
Richard Spitz (spitz@ana.med.uni-muenchen.de) wrote:
: Douglas Wilson <dougw@amgen.com> wrote:
: DW: Try updating the date to a valid date with the between clause:
: DW: update edomorg set opdate="19.09.96"
: DW: where opdate between "19.09.96" and "20.09.96"
: DW: since they get selected, they should get updated(hopefully)
: The update failed with a similar error:
: 346: Could not update a row in the table
: 105: ISAM error: bad isam file format
: I also looked in the "online.log" file. There it says:
: 09:34:18 Rowid 0xc01 not found for delete in partnum 10000d8, key 1
: 09:34:18 7fffe488: 11098108 00000001 34de98e6 00050012 ........ 4.......
: 09:34:18 Run tbcheck -cI 16777432
: 09:34:18 -- Fail Consistency Check -- Delete failed -- pid=19591 user=104
us=11001ee8
: The suggested "tbcheck -cI 16777432" returns no error.
Have you tried "tbcheck -cd 16777432"? It's got to be either index or data
corruption in your table. Frankly, I'd lean toward index corruption, the
clean tbcheck notwithstanding...
I can't find your original post, so I don't have all the information, but
but here's my best guess...
Somehow you have an invalid opdate in your edomorg table that shows up when
you perform a query:
WHERE opdate BETWEEN "19.09.96" and "20.09.96"
but you can't UPDATE this row, because it gives you -346/105.
Partnum 16777432 (0x10000d8) should be your edomorg table -- you can verify
this by doing:
SELECT tabname FROM systables WHERE partnum = 16777432
Then try:
SELECT rowid FROM edomorg WHERE opdate BETWEEN "19.09.96" and "20.09.96"This will probably give you rowid 3073.
Well, even if it doesn't, try:
SELECT * FROM edomorg WHERE rowid = 3073;(This is the rowid that's giving you the error in online.log.)
If you get data back, then it must be the index that's corrupt, not the data.
I think it's your first index, but anyway, it must contain opdate as the first
column in the index. I'd recommend you drop the index and rebuild it.
If you don't get data back, try this (replace dbname with your database name):
tbcheck -pp dbname:edomorg 0xc01
Check under the "type" heading to see what kind of page it is. It should be
DATA. If not, again, your index is corrupt, and you should drop it. If it is
DATA, look in slot 1 for the actual data, and see if you can tell if it's
okay. If it's corrupted, you'll probably have to unload your table to fix the
problem... you can try: DELETE FROM edomorg WHERE rowid = 3073, but that will
probably just give you the same -105 and errors in online.log.
Hope this helps.
Actually, it might be easiest to just drop the index and see if that fixes
your problem ;-)
June
---- June Tong Informix Software ----
---- Senior Consultant (415) 926-6140 ----
---- International Support junet@informix.com ----
---- Location-du-jour: Menlo Park ----
*
* Standard disclaimers apply
*
- Please do not send me requests/questions by mail. When I have the knowledge
- and time permits, I try to answer questions on comp.databases.informix, but
- travel schedule, time, and volume make responding to personal requests
- difficult and often slow. Please call your local Informix Technical Support
- organization for assistance with technical issues.