Icon View Thread

The following is the text of the current message along with any replies.
Messages 1 to 10 of 11 total
Thread DBISAM Engine Error #8965 = Index page buffers corrupt in the table "myTable"
Fri, Jun 15 2007 12:40 PMPermanent Link

Dave Harrison
For some reason, when I update a memo field using a TDBISAMTable, I get
"DBISAM Engine Erorr # 8965 Index page buffers corrupt in the table
'MyTable'". I repair the table using SysUtils and try again, and I get
the same error. I am using 4.25 latest release (re-installed it today).

This memo has a full text index in it and the very first time I try and
post the changes, it gives me this error. I will try removing the full
text index and try again.

Dave
Fri, Jun 15 2007 2:04 PMPermanent Link

Roy Lambert

NLH Associates

Team Elevate Team Elevate

Dave


I'd bet the full text index is involved. If you have written a custom one then you can't use dbsys for anything apart from looking at the table, and even then not if you use the FTI.

If you do a search you'll see a lot of posts about this topic.

Roy Lambert
Fri, Jun 15 2007 2:45 PMPermanent Link

Dave Harrison
Roy Lambert wrote:

> Dave
>
>
> I'd bet the full text index is involved. If you have written a custom one then you can't use dbsys for anything apart from looking at the table, and even then not if you use the FTI.
>
> If you do a search you'll see a lot of posts about this topic.
>
> Roy Lambert
>

Roy,
    My app does work (saves the record) if the fulltext index is removed.

What do you mean "a custom one"? The full text index was defined in
dbSys. The only thing I have added to my app re: full text index, was I
added an exclude word list event that gets triggered when the fulltext
index is added when a record is saved. So I guess when I rebuild the
index in dbSys, it adds more words to the index than necessary, correct?
Is this what's causing the problem?

Dave
Sat, Jun 16 2007 6:19 AMPermanent Link

Roy Lambert

NLH Associates

Team Elevate Team Elevate

Dave


>What do you mean "a custom one"? The full text index was defined in
>dbSys. The only thing I have added to my app re: full text index, was I
>added an exclude word list event that gets triggered when the fulltext
>index is added when a record is saved. So I guess when I rebuild the
>index in dbSys, it adds more words to the index than necessary, correct?
>Is this what's causing the problem?


That sounds like the sort of thing. If all you're doing is adding stop words, and the list doesn't change then I'd restructure the table to add these into the stop word list for the full text index then it will be fine in both DBSys and your app.

Roy Lambert
Sat, Jun 16 2007 7:53 AMPermanent Link

Tim Young [Elevate Software]

Elevate Software, Inc.

Avatar

Email timyoung@elevatesoft.com

Dave,

<< What do you mean "a custom one"? The full text index was defined in
dbSys. The only thing I have added to my app re: full text index, was I
added an exclude word list event that gets triggered when the fulltext index
is added when a record is saved. So I guess when I rebuild the index in
dbSys, it adds more words to the index than necessary, correct? Is this
what's causing the problem? >>

Yep.  If you use any customization of the full-text indexing, then you need
to propogate that customization to anything that updates the table(s) using
the full-text indexes.  Otherwise you'll corrupt the indexes.

--
Tim Young
Elevate Software
www.elevatesoft.com

Sat, Jun 16 2007 3:44 PMPermanent Link

Dave Harrison
Tim Young [Elevate Software] wrote:

> Dave,
>
> << What do you mean "a custom one"? The full text index was defined in
> dbSys. The only thing I have added to my app re: full text index, was I
> added an exclude word list event that gets triggered when the fulltext index
> is added when a record is saved. So I guess when I rebuild the index in
> dbSys, it adds more words to the index than necessary, correct? Is this
> what's causing the problem? >>
>
> Yep.  If you use any customization of the full-text indexing, then you need
> to propogate that customization to anything that updates the table(s) using
> the full-text indexes.  Otherwise you'll corrupt the indexes.
>

So if my program has an DBISAMEngine1.OnTextIndexFilter event that
removes text from the paragraph when the record is saved (I'm removing
tags from the text), and then I use DbSys to modify the table structure,
it's going to cause my program to give me a corrupted index error?

If so I'll either modify dbSys or leave the tags in the index.

Dave
Mon, Jun 18 2007 12:10 PMPermanent Link

Dave Harrison
Dave Harrison wrote:
> Tim Young [Elevate Software] wrote:
>
>> Dave,
>>
>> << What do you mean "a custom one"? The full text index was defined in
>> dbSys. The only thing I have added to my app re: full text index, was
>> I added an exclude word list event that gets triggered when the
>> fulltext index is added when a record is saved. So I guess when I
>> rebuild the index in dbSys, it adds more words to the index than
>> necessary, correct? Is this what's causing the problem? >>
>>
>> Yep.  If you use any customization of the full-text indexing, then you
>> need to propogate that customization to anything that updates the
>> table(s) using the full-text indexes.  Otherwise you'll corrupt the
>> indexes.
>>
>
> So if my program has an DBISAMEngine1.OnTextIndexFilter event that
> removes text from the paragraph when the record is saved (I'm removing
> tags from the text), and then I use DbSys to modify the table structure,
> it's going to cause my program to give me a corrupted index error?
>
> If so I'll either modify dbSys or leave the tags in the index.
>
> Dave

Well, I've decided to pursue this some more and I'm looking at the
source code for DbSys. I need to add an OnTextIndexFilter event to
remove the tags in the full text index for one of the fields. Where do I
do this in DbSys? This needs to be done whenever the index is rebuilt,
as is the case when the table is re-indexed, altered, repaired or
optimized. (This seems to be a heck of a lot of work just to allow my
app to strip out tags in the text for a full text index-but it's going
to have to get done.)

Dave
Mon, Jun 18 2007 12:22 PMPermanent Link

"Jose Eduardo Helminsky"
Dave

I just upload DBM (Database Manager for DBISAM 4) to Binaries group and it
will do this task so easy.

Eduardo

Mon, Jun 18 2007 1:46 PMPermanent Link

Roy Lambert

NLH Associates

Team Elevate Team Elevate

Dave


You add it in the same way as in your app Smileyjust add the text index event to the engine.

Having a quick shuftie

procedure TMainForm.FormCreate(Sender: TObject);
begin
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>  I'd add the pointer to the proc just here eg
Engine.OnTextIndexFilter := ftiMassage;
  Engine.FilterRecordCounts:=False;

and this

 procedure ftiMassage(Sender: TObject; const TableName, FieldName: string; var TextToIndex: string);

goes in the type declaration at the top of the form.

Roy Lambert
Mon, Jun 18 2007 11:45 PMPermanent Link

Dave Harrison
Roy Lambert wrote:
> Dave
>
>
> You add it in the same way as in your app Smileyjust add the text index event to the engine.
>
> Having a quick shuftie
>
> procedure TMainForm.FormCreate(Sender: TObject);
> begin
>
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> I'd add the pointer to the proc just here eg
>
>  Engine.OnTextIndexFilter := ftiMassage;
>    Engine.FilterRecordCounts:=False;
>
> and this
>
>   procedure ftiMassage(Sender: TObject; const TableName, FieldName: string; var TextToIndex: string);
>
> goes in the type declaration at the top of the form.
>
> Roy Lambert
>

Roy,
   Yes, that worked, thanks. Smile

Dave
Page 1 of 2Next Page »
Jump to Page:  1 2
Image