Consultor Eletrônico



Kbase P113549: Errors 11494 amd 4431 running proutil -C idxfix, option 6.
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   10/16/2008
Status: Unverified

FACT(s) (Environment):

Progress 9.x
OpenEdge 10.x

SYMPTOM(s):

Errors running proutil -C idxfix, option 6 "Delete one record and it's index entries"

ERROR: The length of key exceeds the maximum size. (11494)

SYSTEM ERROR: Failed to build key for recid = <RECID> index number <index-num> table number <table-num>. (4431)

CAUSE:

This is a known issue.

One of the indexed character fields in the record you are trying to delete via option 6 of idxfix, exceeds the maximum length allowed for an index (that is: 191 bytes).
For example, if you tried to delete a customer record from the sports2000 database where Name has been set to a 400-character string, you would see these errors when trying to delete such record via idxfix.

FIX:

There are two possible workarounds, but both of them imply some down time for your database, proportional to the size of your table, the number of indexes and your machine's performance.

1) Drop the index(es) to which the exceedingly-long character field belongs, then delete the problematic record via the 4GL or idxfix, then recreate the dropped index(es).

2) Alternatively, follow these steps:

- Identify the RECID of the problematic record.
- Bring down the database.
- Truncate the before image via proutil <dbname> -C truncate bi.
- Run proutil <dbname> -C dbrpr.
- Select the storage area where the table lives via option 9.
- Select option 3. Remove Bad Record Fragment.
- When prompted, enter the RECID found before.

Now, rebuild all the indexes for the table, via proutil <dbname> -C idxbuild. OpenEdge 10 has the option to rebuild the indexes of a specific table; if you are using Progress 9, then you will have to follow the steps described in Solution P81553.