Kbase 21019: CRC Not Recalculated -- Index Components and CRC error 7968
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  10/16/2008 |
|
Status: Verified
FACT(s) (Environment):
Progress 9.x
SYMPTOM(s):
Error 7968 when deploying r-code against a database with the same database structure.
** CRC for index '<indexname>' on table '<tablename>' does not match CRC in procedure '<procedure>'. Try recompiling. (7968)
CAUSE:
The database engine calculates the CRC for an index based on specific information; for example, the field-name of the components of the index, among others. The CRC is recalculated when the information is changed.
However, there is a situation where the CRC is not being recalculated -- when a field name gets changed, an index which has that field as component will not have its CRC recalculated.
Therefore, you will need to recompile the code against the target database since the CRCs will not match.
For example, let's say you have a field called FIELD1 that is part of an index. When you change its name to FIELD1A, the index CRC will not get changed. If you then dump the table definitions and load it into another database, the index CRC will not match between the databases. A program compiled against the first database will not run against the new database.
FIX:
This problem is fixed in 9.1C.
Possible workarounds are:
- Recompile the programs against the target database.
- You may use incremental .df to apply the changes to the other databases.
- Rename the index to something else, then rename it back to the original name. That will recalculate the index CRC.
Remember to recompile the application before deploying it against other databases.
- Deactivate the index (From Data Administration, menu Utilities) and then reactivate it (proutil idxbuild). Remember to recompile the application before deploying it against other databases.