How to recover from SYS1302, SYS1303 errors? (None Specified)
At 07 DEC 1998 03:19:19PM Ruben Martinez wrote:
One of the functionalities of the application that I'm developing is that the user can attach tables from various volumes (directories) to access different data with the same application. In some moment of the attach process of the new data, I receive the next messages:
SYS1302: Volume record for attached table is missing.
SYS1303: Table list in the volume record does not synch with the systables record.
and there is no way to remove the attached tables.
I have looked into the SYSVOLUMES record for the attached volumes, and there is no information in field 3 corresponding to the tables of that volume.
After this errors happens, the only way I can continue with the application is restoring a backup from the entire developing environment.
My questions are:
1. This problem is because a bug in OI (I'm using OI 3.6)?
2. If it is a bug, how can I fix it without restoring the entire developing environment?
At 08 DEC 1998 09:43AM Chris Revelation Software wrote:
Ruben -
Take a look at this.
Follow those instructions, and if you still experiance problems let me know.
-Chris
Revelation Software
At 08 DEC 1998 01:43PM Ruben Martinez wrote:
Thank you Chris, I'll try that utility.
At 08 DEC 1998 08:06PM Ruben Martinez wrote:
Hello Chris:
I have tried the utility and it works fine from the developer's evironment. My application is totally in spanish, so I can't include this utility on it. Can you send me more information on how to run
this very valuable utility without user interface?
Thank you again…
At 10 DEC 1998 02:54PM Cameron Purdy wrote:
Ruben,
You cannot re-compile the utility; is uses the system variable set (SYSCOMMON). Here is the source; just massage the output (see "SWAP" in the programmer's reference). BTW, this functionality is included in OI 3.7 (it auto-checks this stuff when OI loads a database).
Cameron Purdy
Revelation Software
<code> function SyncDB(bUpdate) * cp 12/13/95 * checks files vs. volumes * if bUpdate is TRUE$, fixes any references $insert Rev_BP, SysCommon cMods =0 Result=" point Vols to SC_ARRAY_VOLUMES(0) point VolFiles to SC_ARRAY_VOLUMES(3) point Files to SC_ARRAY_TABLES(0) point FileVols to SC_ARRAY_TABLES(1) * first verify volume structures cVols=count(Vols, @fm) + (Vols # "") for iVol=1 to cVols Vol=Vols cFiles=count(VolFiles, @vm) + (VolFiles # "") for iFile=1 to cFiles File=VolFiles locate File in Files using @fm setting Pos then * check volume reference if FileVols # Vol then Result=The ": File: " table is referenced by the ": Vol: " volume but is attached under the ": FileVols: " volume" if bUpdate then VolFiles=delete(VolFiles, iVol, iFile, 0) end cMods += 1 end end else * file does not exist but is referenced by volume Result=The ": File: " table is referenced by the ": Vol: " volume but is not attached" if bUpdate then VolFiles=delete(VolFiles, iVol, iFile, 0) end cMods += 1 end next iFiles next iVol cFiles=count(Files, @fm) + (Files # "") for iFile=cFiles to 1 step -1 File=Files Vol =FileVols * check volume reference locate Vol in Vols using @fm setting Pos then locate File in VolFiles using @vm setting Pos else * file not referenced by a volume Result=The ": Vol: " volume is referenced by the ": File: " table but the volume does not reference the table" if bUpdate then for i=0 to 5 SC_ARRAY_TABLES(i)=delete(SC_ARRAY_TABLES(i), iFile, 0, 0) next i end cMods += 1 end end else * file references unattached volume Result=The ": Vol: " volume is referenced by the ": File: " table but is not attached" if bUpdate then for i=0 to 5 SC_ARRAY_TABLES(i)=delete(SC_ARRAY_TABLES(i), iFile, 0, 0) next i end cMods += 1 end next iFile if bUpdate then Result=cMods: " reference errors were corrected" end else if cMods then Result=cMods: " reference errors were detected" end else Result=The database is synchronized correctly" end end swap @fm with \0D0A\ in Result return Result</code>
At 10 DEC 1998 11:08PM Ruben Martinez wrote:
Thank you very much Cameron, this is what I needed!!!