Progress 4GL:重复加载同一份.df文件时表的CRC值是否固定?
加载带POSITION属性.df文件修复CRC问题的说明
结论
重新加载步骤1中带POSITION属性的原.df文件可以完全修复CRC报错,表CRC值会恢复为4692,与现有.r文件的CRC值匹配,无需重新编译.p程序。
原理说明
- OpenEdge数据库的表CRC计算会将字段的POSITION属性(即字段物理存储顺序)纳入计算规则,字段顺序变化会直接导致CRC值变动
- 第二次加载同一份.df时未指定POSITION参数,相当于修改了表的字段物理顺序,才会触发CRC从4692变为64665,与已编译.r文件的校验值不匹配
- 重新加载带POSITION属性的原.df后,字段物理顺序会恢复到首次加载后的状态,表CRC值会同步重置为4692,和.r文件内置的CRC校验值完全一致,程序可直接正常运行
注意事项
后续加载.df文件如果需要保持存量r-code兼容、无需重编译即可运行,必须固定携带POSITION参数加载,避免字段物理顺序发生非预期变更。
内容的提问来源于stack exchange,提问作者Bharat
相关产品推荐
相关产品推荐

