Login ProductsSalesSupportDownloadsAbout |
Home » Technical Support » ElevateDB Technical Support » Support Forums » ElevateDB General » View Thread |
Messages 1 to 10 of 30 total |
Corrupt Temporary Table |
Fri, Dec 4 2015 9:58 AM | Permanent Link |
M Eric Hubert | Hi,
I use temporary table in local mode (version 2.20 on Delphi 7). On a table update the post return Error #601 'the index is missing a request key' This index is composed of one integer field. The table is composed of some string and integer fields ans some others index. The table is created in memory at the beginning of the program. All insert work but some edit return #601. I have tested with temporary table on disk and i have the same error. I reproduce this problem on different machine with the same data. But with others data, all work. Any idea ? |
Fri, Dec 4 2015 10:34 AM | Permanent Link |
Roy Lambert NLH Associates Team Elevate | Eric
>I use temporary table in local mode (version 2.20 on Delphi 7). >On a table update the post return Error #601 'the index is missing a request key' >This index is composed of one integer field. The table is composed of some string and integer fields ans some others index. >The table is created in memory at the beginning of the program. >All insert work but some edit return #601. >I have tested with temporary table on disk and i have the same error. >I reproduce this problem on different machine with the same data. >But with others data, all work. Looking at the manual 601 is The table <TableName> is corrupt (<ErrorMessage>)This error is raised when ElevateDB encounters an issue while reading, writing, or validating a table. If this error occurs during normal operation of ElevateDB, please contact Elevate Software for further instructions on how to correct the issue. The specific error message is indicated within the parentheses. Since you're using a freshly created table and it doesn't occur with someone else's data but does occur on different PCs I would suspect the data you are trying to insert. You haven't said if you're using SQL or navigational methods to insert the data nor if its using f/s or c/s. But which ever way you're doing it you need to trap when the error occurs and then examine the data. Roy Lambert |
Fri, Dec 4 2015 12:48 PM | Permanent Link |
Tim Young [Elevate Software] Elevate Software, Inc. timyoung@elevatesoft.com | Eric,
<< I reproduce this problem on different machine with the same data. But with others data, all work. >> I'm not quite sure what you're saying here. Can you reproduce the problem on more than one machine, or does it only happen on one particular machine ? If you have code that reproduces the problem, please send it to me and I'll take a look. Also, when you say that you're creating the temporary table in memory, does that mean you are are using: CREATE TEMPORARY TABLE xxxx with an in-memory database ? Tim Young Elevate Software www.elevatesoft.com |
Mon, Dec 14 2015 4:09 AM | Permanent Link |
M Eric Hubert | Hi, sorry for the delay. I was sick.
I try to isolate the problem. I suspect also the data. At the beginning, the data is in EDB Table (not temporary). This table work well. The temporary table is local (not C/S) Memory or not memory, the error is the same. I insert data from the EDB Table to EDB Temporary Table with Table.Insert and Table.post. This part work without error. Then in the code, i made Table.Edit and Table.Post. Always, in the same moment, with the same data, i have this error in the post. In the Edit, i change the value of a integer column in the index. If i change the datas : no error. |
Mon, Dec 14 2015 5:38 AM | Permanent Link |
M Eric Hubert | I have new information.
I check the data. All Fields containts null or '0'..'9' or ' ' or 'A'..'Z' characters. The structure of the temporary table is : CREATE TEMPORARY TABLE "TMP328504715" ( "NO_UNIQUE" INTEGER, "ORDRE" INTEGER, "HUB" VARCHAR(1) COLLATE "ANSI_CI", "PIC" VARCHAR(3) COLLATE "ANSI_CI", "PTR" VARCHAR(4) COLLATE "ANSI_CI", "PDC" VARCHAR(4) COLLATE "ANSI_CI", "CODE_POSTAL" VARCHAR(5) COLLATE "ANSI_CI", "COMMUNE" VARCHAR(32) COLLATE "ANSI_CI", "PTR_DATA" INTEGER, "POIDS_RTG" INTEGER, "VALIDER" BOOLEAN, "MINS_POIDS" INTEGER, "MAXS_POIDS" INTEGER, "MINL_POIDS" INTEGER, "MAXL_POIDS" INTEGER, "MINL_EXE" INTEGER, "NO_ETQ" INTEGER, "NO_LIASSE" INTEGER, "LIASSE" VARCHAR(1) COLLATE "ANSI_CI", "CODE_PRESENTATION" VARCHAR(2) COLLATE "ANSI_CI", "NIVEAU_PREPARATION" INTEGER, CONSTRAINT "PK" PRIMARY KEY("NO_UNIQUE") ) ; CREATE INDEX "I_NO_ETQ" ON "TMP328504715" ("NO_ETQ" COLLATE "ANSI_CI" ) ; CREATE INDEX "I_LIASSE" ON "TMP328504715" ("ORDRE" COLLATE "ANSI_CI" ,"HUB","PIC","PTR","PDC","CODE_POSTAL","COMMUNE","PTR_DATA") ; In the Insert Part, if i write null or a constant in the CODE_POSTAL field, there is no error. With no change, i have a problem with I_NO_ETQ |
Mon, Dec 14 2015 6:03 AM | Permanent Link |
Roy Lambert NLH Associates Team Elevate | Eric
Can you post the insert statements that give rise to the problem please so that I can try it here Roy Lambert |
Mon, Dec 14 2015 8:07 AM | Permanent Link |
M Eric Hubert | If i replace EDB by kbmMemTable for this temporary table. All work. (i have check all the results of the program)
The original code for the insert is: Try TableBuffer.Insert; TableBufferORDRE.Assign (TableRTGDESTINEOORDRE); TableBufferHUB.Assign (TableRTGDESTINEOHUB); // TableBufferPIC.Assign (TableRTGDESTINEOPIC); // TableBufferPTR.Assign (TableRTGDESTINEOPTR); // TableBufferPDC.Assign (TableRTGDESTINEOPDC); // TableBufferCODE_POSTAL.Assign (TableRTGDESTINEOCODE_POSTAL); TableBufferCOMMUNE.Assign (TableRTGDESTINEOCOMMUNE); TableBufferPOIDS_RTG.Assign (TableRTGDESTINEOPOIDS_RTG); TableBufferNO_UNIQUE.Assign (TableRTGDESTINEONO_UNIQUE); TableBufferPTR_DATA.Assign (TableRTGDESTINEOPTR_DATA); TableBufferVALIDER.Value := False; TableBuffer.Post; Except On E: Exception do Raise Exception.Create ('TDataModuleDESTINEO.InsererBuffer' + Crlf + E.Message); End; The original code for the edit is (the error is on the post) Try TableBuffer.Edit; TableBufferNO_ETQ.Value := NoEtqSession; TableBufferCODE_PRESENTATION.value := CodePresentation; TableBufferNIVEAU_PREPARATION.value := NiveauPreparation; TableBufferNO_LIASSE.value := NoLiasseSession; if Not SansLiasseLot then begin TableBufferLIASSE.Value := Marquage; End; TableBufferMINS_POIDS.Value := MINS_POIDS; TableBufferMAXS_POIDS.Value := MAXS_POIDS; TableBufferMINL_POIDS.Value := MINL_POIDS; TableBufferMAXL_POIDS.Value := MAXL_POIDS; TableBufferMINL_EXE.Value := MINL_EXE; TableBufferValider.Value := True; TableBuffer.Post; Except On E: Exception do Raise Exception.Create ('TDataModuleDESTINEO....GererLiasse.Pt2' + Crlf + E.Message); End; In the insert, if i change the line : TableBufferCODE_POSTAL.Assign (TableRTGDESTINEOCODE_POSTAL); By //TableBufferCODE_POSTAL.Assign (TableRTGDESTINEOCODE_POSTAL); Or TableBufferCODE_POSTAL.Value := '92350' There is no error |
Mon, Dec 14 2015 8:43 AM | Permanent Link |
Roy Lambert NLH Associates Team Elevate | Eric
You've confused me a bit here. You get an error on two different tables, one on editing, one on inserting, and involving different columns. Is that right? I think it would be useful, for me, and probably Tim, if you could put together a small project with data showing the problem and post it to the binaries. Roy Lambert |
Mon, Dec 14 2015 9:33 AM | Permanent Link |
M Eric Hubert | No, TableBuffer is the same Temporary Table.
At the beggining of the program, i insert some records. This part have no error. In the run of the program, i make some edit on this table. This part have the error. But if i change the value on the insert for the CODE_POSTAL field, the edit have no error (it's strange). The error is on the index I_NO_ETQ. I don't understand why the CODE_POSTAL value create or not create a table corruption on the index NO_ETQ The CODE_POSTAL field contains always 5 numerics characters (0 to 9) (It's a french zip code). I have check all the datas. I have do another test : i add +1 on the value of CODE_POSTAL field : there is no error. |
Mon, Dec 14 2015 10:31 AM | Permanent Link |
Roy Lambert NLH Associates Team Elevate | Eric
I have no idea if I can help but I need something to work with. If I can't help Tim should be able to but the same will apply to him - he'll need something to work with. What you're posting makes no sense. Altering a column should not have any impact on an index that its not part of. If it was affecting I_LIASSE then at least its part of that index. Please post a small demo to the binaries. Roy Lambert |
Page 1 of 3 | Next Page » | |
Jump to Page: 1 2 3 |
This web page was last updated on Monday, May 6, 2024 at 03:23 PM | Privacy PolicySite Map © 2024 Elevate Software, Inc. All Rights Reserved Questions or comments ? E-mail us at info@elevatesoft.com |