Index is out of date как исправить

← →Weare   (2002-06-21 17:27) [0]

 
Weare
 
(2002-06-21 17:27)
[0]

Подскажите, пожалуйста. У меня часто при работе программы выскакивает «Index is out of date». В Desktope это исравлял, но ведь хочеться, чтобы программа сама это исправляла.(кстати почему вообще это так часто появляется)

Тогда я решил вставить в код программы перегенерацию индексов:

DataModule2.Users.Exclusive:=True;

DataModule2.Users.Open;

Check(dbiRegenIndexes(DataModule2.Users.Handle));

Для этой таблицы все нормально отрабатывает, а для другой пишет:

«Must use baseorder for this operation».Подскажите, в чем тут дело и есть ли другое решение проблемы.

Заранее огромное спасибо.


 
MsGuns
 
(2002-06-21 19:47)
[1]

Речь идет об индексах или первмчных ключах (Primary) ?


 
Weare
 
(2002-06-22 14:20)
[2]

Речь идет об индексах. Хотя первичные ключи у меня типа autoincrement.


 
VAleksey
 
(2002-06-24 08:16)
[3]

Base order означает непосредственный (прямой) доступ к таблице.

Берешь (лучше создаешь) новый объект TTable назначаешь ему имя таблицы и только затем вызываешь dbiRegenIndexes


 
Виктор
 
(2002-06-24 10:40)
[4]

просто перед переиндексацией установи

DataModule2.Users.IndexName := «»;


 
Weare
 
(2002-06-24 12:49)
[5]

Спасибо всем,

TTable я итак использую, не помогало.

А вот ответ Виктора действительно помог (спасибо огромное, а то я зациклился на этой проблеме)- все работает.

Кстати, может кто подскажет почему вообще так часто портятся индексы (или индексные файлы).

Идея моей проги такая: у меня в моей проге к базе (около 20 таблиц) по сетке обращаются несколько человек. И в зависимости от введеного пароля таблицы фильтруются. И затем один человек с правами админа работает со всей базой.


 
VAleksey
 
(2002-06-24 13:34)
[6]

Кэш почаще сбрасывай. ( dbiSaveChages )


 
Weare
 
(2002-06-24 14:11)
[7]

Подожди VAleksey, ты что хочешь сказать, что индексы слетают из-за переполнения кэша. Объясни, пожалуйста, поподробнее…


 
MEgor
 
(2002-06-25 02:56)
[8]

У меня похожая ситуация. Делаю Table1.EmptyTable — и после этого

получаю
«Index is out of date». В этом индексе присутствует поле типа Data. На другом индексе такого не возникало (пока). Решить проблему не смог.

Пришлось удалять записи последовательным перебором.

Еще. у одной таблицы два индекса.

Добавляю в нее порядка 500 тыс. записей — ни один индекс не изменился, т.е. оба как были 2 кб., так и остались.

У другой таблицы из двух индексов меняется только один.

Короче говоря — бардак с этим парадоксом.


 
VAleksey
 
(2002-06-25 08:47)
[9]



> Weare © (24.06.02 14:11)



нет. просто бывают проблемы с этим кэщированием при многопользовательском доступе к таблице, пожтому надо кэш почаще сбрасывать.


 
Evyshka
 
(2002-06-25 09:22)
[10]

У меня эта же проблема В день восстанавливаю индексы около 2-х раз (Или сообщениу Index out of date или все виснет), база очень большая Может ли быть проблема из за частой сортировки

или при выполнении запроса?


 
alexanderK
 
(2002-06-25 09:40)
[11]

MEgor> Еще. у одной таблицы два индекса.

MEgor> Добавляю в нее порядка 500 тыс. записей — ни один индекс MEgor> не изменился, т.е. оба как были 2 кб., так и остались.

Так будет если у таблицы не назначен Primary


 
Anatoly Podgoretsky
 
(2002-06-25 09:56)
[12]

MEgor © (25.06.02 02:56)

У тебя явно не обслуживаемые индексы иди в DBD и исправь


 
Lolik
 
(2002-06-25 12:20)
[13]

Если к твоей базе данных обращается, кто-то с той же машины, на которой находится база данных (предполагаю, что это админ), то в настройках BDE обязательно на этой машине должно быть установлено LOCAL SHARE = True. Иначе не происходит запись в .lck

файлы данных о блокированных в данный момент записях, летят индексы.

PS

Уже 6 лет используем Paradox в своих многопользовательских системах, индексы разваливаются довольно редко в основном по двум причинам 1. жесткий диск на ладан дышит и сбоит 2. в однопользовательском режиме выключают комп при открытых таблицах либо напруга пропадает.

Не спорю, что SQL решения надежней и современней, но не всегда оправдывается…


 
Weare
 
(2002-06-25 12:54)
[14]

to Lolik

Спасибо.

Может подскажешь, какие последствия одновременного обращения к одной записи с разных машин, ведь здесь идет блокировка на уровне записи. И еще, как можно увеличить скорость открытия базы по сети, а то у меня сильно долго грузится.


 
Lolik
 
(2002-06-25 13:43)
[15]

При просмотре все будет ок, правда в Grid-е запись изменится только после прорисовки Grid-а. При попытке редактироавания сообщит, что запись заблокированна таким то пользователем,и не войдет в режим редактирования.

Скорость открытия увеличить можно только уменьшив обьем того, что открывается, т.е. как можно меньше индексов и как можно короче их сделать, если индексов много, то первичный ключ автоинкрементный, у тебя вроде так и сделано. Держать таблицы

на DataModule и открывать их один раз при входе в приложение.

Никаких фильтров по большим базам, особенно установленных в дизайне. Если уж нужно фильтровать, то лучше добавить индекс и использовать SetRange, ограничивая выборку, а затем включать фильтр, если необходимо. На скорую руку ничего больше в голову не прходит.

Если позволяют средства клиента, то можно использовать терминального клиента W2000, тогда приложение будет работать на сервере и трафика по сети практически не будет, правда аппаратные требования к серверу возрастают — по крайней мере 20 Мб оперативки на каждого пользователя и хороший проц, а лучше 2.


 
Weare
 
(2002-06-25 14:02)
[16]

to Lolik

Спасибо, я вроде все так и делаю. Значит у меня оптимальная скорость открытия.

Хотя еще более медленнее стало открываться, когда я вставил перегенерацию индексов и упаковывание таблиц в код программы. А то индексы слишком часто слетали (проблема в самом верху записана).Что скажешь?


 
VAleksey
 
(2002-06-25 14:17)
[17]



> Weare © (25.06.02 14:02)



Так наверное такой скорости как при работе с локальнами данными трудно добиться даже от клиент-сервер :).

А притензий по надежности к парадоксу у меня лично никаких.

Lolik © от (25.06.02 12:20) все правильно сказал.


 
Lolik
 
(2002-06-25 14:27)
[18]

Если перестроение индексов при входе в программу, то открываться будет долго и при одновременном входе будут проблемы, можно вынести регенерацию индексов в отдельное приложение. Если все правильно настроено, а индексы валятся часто, то возможно нужна разъяснительная работа с пользователями на предмет выхода из программы, а затем выключения компьютера (была у нас такая проблема с одним закачиком). Можно при открытии проги писать в файл или регистр признак, при нормальном закрытии его убирать, если при входе признак уже стоит выдавать пользователю сообщение, что он некорректно вышел из программы в прошлый раз и может потерять введенные данные. Можно делать принудительную регенерацию индексов, но в сетевом варианте это не проходит. Мы ограничились страшным сообщением желтыми буквами на красном фоне и помогло.


 
Weare
 
(2002-06-25 14:30)
[19]

to VAleksey



>

> Так наверное такой скорости как при работе с локальнами

> данными трудно добиться даже от клиент-сервер :).



В смысле, такой высокой или медленной? Ведь некоторые клиент-серверные СУБД по скорости обгоняют локальные.


 
Lolik
 
(2002-06-25 14:36)
[20]

Обгоняют только при правильно составленных запросах, которые выполняются на стороне сервера и результатом работы которых будет небольшая выборка, которая и перешлется клиенту по сети. Логика приложения другая.


 
VAleksey
 
(2002-06-25 14:42)
[21]



> Ведь некоторые клиент-серверные СУБД по скорости



что-то я таких не видел :)

конечно высокой.

Здесь разница в том что локальные таблицы у тебя на винте и скорость их обработки зависит от параметров компьютера, скорость обработки данных на сетевом диске зависит от скорости работы сети. Так же от скорости сети зависит работа с клиент — серверными БД. В общих чертах преимущество использования клиент — сервер вместо простого расшаривания диска по сети это уменьшение нагрузки на сеть за счет обработки данных на сервере.


 
Weare
 
(2002-06-25 14:49)
[22]

Спасибо.


 
MEgor
 
(2002-06-26 06:50)
[23]

Anatoly Podgoretsky (25.06.02 09:56)

Что значит явно не обслуживаемые ?

Добавляю запись — будь добр перестройся.


 
MEgor
 
(2002-06-26 06:54)
[24]

to alexanderK (25.06.02 09:40)

А мне Primary в данном случае не нужен.

Мне нужны два не уникальных индекса. Один используется при расчете(поиск идет), второй при отображении данных на экране в удобном отсортированном виде.


 
VAleksey
 
(2002-06-26 07:23)
[25]



> MEgor © (26.06.02 06:54)



Тогда тебе надо программным способом создавать необновлянмые индексы.


 
MEgor
 
(2002-06-26 08:03)
[26]

to VAleksey © (26.06.02 07:23)

И каким образом все это должно выглядеть ?


 
VAleksey
 
(2002-06-26 08:17)
[27]

Table1.AddIndex(..,.., nonMaintained);

Что-то типа такого


 
VAleksey
 
(2002-06-26 08:18)
[28]

Table1.AddIndex(«NewIndex», «CustNo;CustName», [ixUnique, ixCaseInsensitive,ixNonMaintained]);


Показано с 11 по 20 из 22

  1. 06.06.2009, 12:07


    #11

    f13nd вне форума


    Разбирающийся

    Аватар для f13nd


    Регистрация
    20.08.2008
    Адрес
    Almaty
    Сообщений
    151
    Поблагодарил(а)
    0
    Благодарностей: 0 (сообщений: 0)

    Отправить сообщение для f13nd с помощью ICQ

    у меня тож такое было… интересно бы узнать из-за чего такое происходит? почему ордерс.дб бьется?


  2. 06.06.2009, 15:19


    #12

    SH вне форума


    ТВОРЕЦ СЧАСТЬЯ

    Аватар для SH


    Регистрация
    29.11.2006
    Сообщений
    18,069
    Поблагодарил(а)
    481
    Благодарностей: 191 (сообщений: 164)

    Ну вообще, если принять на веру, что сам r-k работает со своими таблицами корректно, таблица (любая) может побиться в случае некорректного закрытия. Допустим, в нее идет запись и тут пропадает электричество. Поэтому на сервере всегда важен бесперебойник.
    Еще может быть, что злоумышленник сохранил orders.db (без индексного файла), потом попробовал подкинуть его обратно, вместо таблицы, в которую были внесены изменения — но так как индексный файл относится уже к другой таблице, выдается подобная ошибка.
    Из всего этого следуют два вывода:
    1. На сервере обязателен ИБП (даже если сервер на кассе);
    2. Доступ к серверу (физический и сетевой к DATABASE) должен быть исключен. Поэтому, в частности, сервер на кассе не желателен.
    В последних версиях UCS постаралось защитить транзакции с таблицами по-максимуму. Ранее в некоторых версиях «удачной» перезагрузкой сервера в момент работы можно было добиться бесследного исчезновения данных о продажах. Поэтому рекомендуется использовать кассовые версии 6.81 и выше.

    Алексей Аркадьев

    Когда заказчик ищет волшебника, то чаще всего он находит сказочника.
    Если у Вас есть вопрос по поддержке — напишите его на форуме, я обязательно отвечу, если знаю ответ.
    Если Вам нужны какие-то файлы, пишите на почту: support@carbis.ru, но вначале посмотрите в разделе для скачивания.
    Для коммерческих вопросов:
    +7 (495) 740-49-91, или на почту: sales@carbis.ru


  3. 08.06.2009, 13:13


    #13

    f13nd вне форума


    Разбирающийся

    Аватар для f13nd


    Регистрация
    20.08.2008
    Адрес
    Almaty
    Сообщений
    151
    Поблагодарил(а)
    0
    Благодарностей: 0 (сообщений: 0)

    Отправить сообщение для f13nd с помощью ICQ

    Thumbs up

    Цитата Сообщение от SH
    Посмотреть сообщение

    Ну вообще, если принять на веру, что сам r-k работает со своими таблицами корректно, таблица (любая) может побиться в случае некорректного закрытия. Допустим, в нее идет запись и тут пропадает электричество. Поэтому на сервере всегда важен бесперебойник.
    Еще может быть, что злоумышленник сохранил orders.db (без индексного файла), потом попробовал подкинуть его обратно, вместо таблицы, в которую были внесены изменения — но так как индексный файл относится уже к другой таблице, выдается подобная ошибка.
    Из всего этого следуют два вывода:
    1. На сервере обязателен ИБП (даже если сервер на кассе);
    2. Доступ к серверу (физический и сетевой к DATABASE) должен быть исключен. Поэтому, в частности, сервер на кассе не желателен.
    В последних версиях UCS постаралось защитить транзакции с таблицами по-максимуму. Ранее в некоторых версиях «удачной» перезагрузкой сервера в момент работы можно было добиться бесследного исчезновения данных о продажах. Поэтому рекомендуется использовать кассовые версии 6.81 и выше.

    Ясно


  4. 19.05.2010, 23:21


    #14

    okis вне форума


    Разбирающийся

    Аватар для okis


    Регистрация
    21.10.2007
    Адрес
    Москва
    Сообщений
    1,447
    Поблагодарил(а)
    2
    Благодарностей: 31 (сообщений: 21)

    В другом заведении возникла такая же проблема. На это раз удалось вылечить при помощи pdxrbld. Спасибо PaViSу за прогу.


  5. 20.05.2010, 01:57


    #15

    VampireKB вне форума


    Разбирающийся

    Аватар для VampireKB


    Регистрация
    27.03.2007
    Адрес
    Moscow City
    Сообщений
    2,854
    Поблагодарил(а)
    0
    Благодарностей: 17 (сообщений: 11)

    Отправить сообщение для VampireKB с помощью ICQ

    у БДЕ есть 1 плохая наследственность: она поддерживает лишь 1 подключение к базе(и,соответсвенно,выпол� �ение максимум 1 скрипта за раз)

    Есть подозрение что одновременное сохранение заказов на нескольких станциях может привести к данной проблеме ….или на очень старых или на очень новых машинках…


  6. 20.05.2010, 01:59


    #16

    Admin вне форума


    Да, вы ЕЁ и видите.

    Аватар для Admin


    Регистрация
    01.11.2006
    Сообщений
    4,786
    Поблагодарил(а)
    5
    Благодарностей: 6 (сообщений: 4)

    Цитата Сообщение от VampireKB
    Посмотреть сообщение

    1 подключение к базе(и,соответсвенно,выпол

    видать кто-то подключился

    You see ass…
    Если проблему можно решить за деньги, то это не проблема, это расходы. Еврейская мудрость.


  7. 20.05.2010, 03:00


    #17

    VampireKB вне форума


    Разбирающийся

    Аватар для VampireKB


    Регистрация
    27.03.2007
    Адрес
    Moscow City
    Сообщений
    2,854
    Поблагодарил(а)
    0
    Благодарностей: 17 (сообщений: 11)

    Отправить сообщение для VampireKB с помощью ICQ

    Усё,обиделся я )
    Вот что значит «хотеть спать»..даже предложение не дописал…. …

    *всем спок.ночи


  8. 20.05.2010, 12:05


    #18

    PaViS вне форума


    В теме


    Регистрация
    20.02.2007
    Адрес
    -<>-
    Сообщений
    631
    Поблагодарил(а)
    1
    Благодарностей: 1 (сообщений: 1)

    Отправить сообщение для PaViS с помощью ICQ

    Цитата Сообщение от okis
    Посмотреть сообщение

    В другом заведении возникла такая же проблема. На это раз удалось вылечить при помощи pdxrbld. Спасибо PaViSу за прогу.

    Тогда кнопочку жми

    Цитата Сообщение от VampireKB
    Посмотреть сообщение

    у БДЕ есть 1 плохая наследственность: она поддерживает лишь 1 подключение к базе(и,соответсвенно,выпол� �ение максимум 1 скрипта за раз)

    Есть подозрение что одновременное сохранение заказов на нескольких станциях может привести к данной проблеме ….или на очень старых или на очень новых машинках…

    Насколько я понимаю, с базой работает кассовый сервер, а официанты обращаются к серверу, но не напрямую к базе. Поэтому, одновременное сохранение заказов не может привести к поломке базы.


  9. 20.05.2010, 15:54


    #19

    okis вне форума


    Разбирающийся

    Аватар для okis


    Регистрация
    21.10.2007
    Адрес
    Москва
    Сообщений
    1,447
    Поблагодарил(а)
    2
    Благодарностей: 31 (сообщений: 21)

    Цитата Сообщение от PaViS
    Посмотреть сообщение

    Тогда кнопочку жми

    Кнопочку нажал там, где прога выложена.


  10. 15.03.2012, 10:04


    #20

    Александрр вне форума


    Новичок


    Регистрация
    23.10.2011
    Адрес
    Омск
    Сообщений
    21
    Поблагодарил(а)
    0
    Благодарностей: 0 (сообщений: 0)

    Добрый день возникла таже проблем c e_rest32 но только при обрашенни конкретно к меню все остально работает выдает следующю ошибку index is out of date Table:C\DbMenu.db помогите ее исправить и если не сложно обьясните попонятнее ))


sn

1

17.10.2009, 08:42. Показов 3814. Ответов 3


В общем на 2000-ой стоит сама база Paradox. Базой пользуются 10 человек по сети. Очень часто ломаются индексы. Ошибка Index is out of date. Почему?

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь

Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

17.10.2009, 08:42

Ответы с готовыми решениями:

Ошибка: index is out of date
Заранее извиняюсь если вы меня не поймете, проблема такая: в Database Desktop есть таблица, для нее…

Почему date(‘h:i:s’, 10) = 03:00:10?
Я ожидаю 00:00:10.:wall:
Понимаю что фигня с часовыми поясами, но не понимаю какие настройки…

Три файла,(index.coo, index.doc, index.lex) а что за БД не знаю
Мне дали файловую БД(о-очень много файлов) и три файла: index.coo, index.doc и index.lex. ни doc,…

Date and Time Picker Control: почему он слетает?
Сделали мы программу в VBA. В общем на первом листе в Excel выложены списки (ComboBox), кнопки и…

3

0 / 0 / 1

Регистрация: 20.05.2008

Сообщений: 26

17.10.2009, 21:53

2

расскажи поподробнее про ‘базу Paradox’. если работаешь через BDE, то индексы нарушаются при попытке разных пользователей одновременно записывать в таблицу. попробуй поставить флажок LocalShare = True (BDE Admin -> Configuration -> System -> Init -> Local Share)



0



sn

18.10.2009, 05:22

3

Доступ именно через BDE. Флажок стоит LocalShare=True. А индексы всё равно рушаться.

Legolas

04.11.2009, 16:50

4

Откажись от BDE, Paradox. Такая штука была и у меня — был дикий головняк. Писал корректоры, переиндексаторы на низком уровне — все падало и глюкало. Когда поставил SQL-Server, не важно какой, хотя у меня был MSSQL 7, головняк исчез КАК КЛАСС. И если бы не прочитал о твоей проблеме, даже и не вспомнил бы. Используй MSSQL+ADO и радуйся жизни — работать будет быстрее, надежнее, администрить будет на порядок, а то и два приятнее.

Database index out of date error

This is a BDE/Paradox error message. For newbies, BDE error messages are daunting, cryptic messages. Actually, even for seasoned veterans, they can sometimes be real «stumpers.» Unfortunately, there’s no real good reference available that I know of, so all I can offer with respect to this error message is my experience.

The «Index out of date» message can mean a couple of things:

1. 1. One of the more common causes of this error is one in which you have a couple of copies of a table existing on your network or machine. For instance, when I develop applications, I have my application tables residing in my development system, then have copies of them on my network. When I need to update my tables, I usually do the updates in my development system, then copy them over to my deployment system on the network. I’ve run into this exact error when I’ve copied only the table (.DB) file and not its accompanying index file(s) (.PX, .X01, .Y01, etc) as well. You see, when you update a table by changing it in any way, its index files are also resynched to reflect the changes. So if you copy just the table to a new place on your system and don’t include its family members, you’ll index files that aren’t in synch with your table. Okay that’s one cause.

2. 2. The next cause could be just this: One of your indexes is corrupt. This could be due to sector errors on your hard disk, or the rare, but possible, direct corruption of an index. This usually happens if your program abended while performing an update to a table with an index of some sort. In that case, the index doesn’t get updated.

But in any case, the only way I know of to correct the problem is to do the following:

1. Open up your table in Database Desktop.

2. Restructure it.

3. Define/Rebuild all your indexes.

4. Save the file.

Взято с Delphi Knowledge Base
http://www.baltsoft.com/

BLOB has been modified., Index is out of date

Объяснение от Борланд:
Index out Date ($2F02) is an error that occurs while using Paradox tables when the data in a table and a corresponding index is not consistent. In most cases (see below for the one exception), short of malicious behavior such as renaming an index, adding some data to the table, then renaming the index back, there is no programmatic way to cause this error to occur. There is no way to determine which index is out of date. All indexes must be recreated.

Blob has been modified ($3302) is an error that occurs when the Blob portion of the record contained in the .DB file has become inconsistent with the Blob portion in the .MB file. This could occur when the write to the .DB file was successful but the .MB file did not get updated, or visa-versa.

There are a few mechanisms to fix a table where these errors have occurred.
1. First try re-starting the application. It is possible that the BDE has become unstable and is reporting incorrect errors. Also try opening the table with a different application.
2. Use Paradox 7 or 8 to run the Table Repair utility. Please see original documentation for more information.
3. Run TUtility and rebuild the table. TUtility is an unsupported utility available for download from the Borland web site in the {Utilities, programs and updates section}.
4. Delete all indexes and recreate them (Index out Date ($2F02) error only). To do this you’ll need to know the structure of all your indexes (including primary) before recreating them, which means you need to know the structure of all indexes before the error occurs.
There are 8 known possible causes for this error.
1. Incorrectly setting the LOCAL SHARE property.

Most commonly this occurs via Peer-to-Peer networking. In this case the two different database engines are on two CPUs, even though they may be the same version. See { BDE setup for Peer-To-Peer(Non-Dedicated) Networks} for additional information on Peer-to-Peer setup.

Another condition is when two different database engines execute on the same CPU concurrently and access data locally. This would be true when any combination of following are used concurrently: The Paradox Engine, BDE 16 bit, BDE 32 bit, Paradox for DOS. In this case each engine must set LOCAL SHARE to TRUE. Note that if use two applications which both use the same database engine (for example: Delphi 3 and C++ Builder 3) concurrently are run LOCAL SHARE does not need to be set to TRUE. In this case, all locking and cached data is in a central memory pool which all BDE applications have access to. Also, if two different database engines use data remotely, LOCAL SHARE must be set to TRUE.

Code should be used at startup to check the setting of local share. Look at the {DbiOpenCfgInfoList } BDE API function call for more information.

2. Error transmitting data from the workstation to the server.

Most commonly, this occurs with bad network hardware (cable, card, hub, etc.). This has been determined to be a problem even though there were no other errors are detected in data transmission. To determine if this is the cause for your error, try eliminating one CPU at a time from using the data and see if the problem continues.

3. Bad VREDIR.VXD on any client accessing tables Windows 95 ONLY:

Several versions (notably 4.00.1113 and 4.00.1114) of the file VREDIR.VXD may need to be updated.

Reports have shown that using the original release of VREDIR.VXD (4.00.950) and a new release (4.00.1116) do not result in the errors «Blob has been modified» and/or «Index is out of date.» If any one of the clients has a «bad» version of this device driver, the error can occur on any machine, not just the machine with the bad driver.

This error most likely occurs in 16Bit versions of the Borland Database Engine, although it still can occur in 32Bit versions.

For further information on the update of VREDIR.VXD, Please check the following Microsoft Articles: {Q174371} and {Q165403}

4. For Windows 95 clients only, when using data on Windows NT: Add the following key in your registry: HKEY_LOCAL_MACHINESystemCurrentControlSetServicesVxDVredir

Then create the string or Binary Value (either one works) with a name of DiscardCacheonOpen and make it equal to 1.

Note that this an undocumented registry entry obtained from Microsoft. Questions on its functionality should be directed to Microsoft.

5. Problem with opportunistic locking Windows NT ONLY: Try turning off opportunistic locking in the Windows NT registry: See Microsoft Article {Q129202}

Note: Borland internal testing has not indicated this setting to be significant. However, some Borland customers have indicated this to solve the problem.

6. Improperly closing files such as due to loss of power or restarting a workstation or the server without closing files first may cause this problem. Paradox tables are not designed to withstand such behavior. If this is a possibility in your environment, we recommend you use a Client Server database that can recover from such conditions.

7. Extremely large numbers of indexes, especially involving Referential Integrity can cause this problem and especially when using Windows NT as the server. Borland recommends using a Client Server database under this condition. However, if you are using Windows NT as your server, switching to Novell Netware or Windows 95 as the server may resolve the problem as well.

8. The one programmatic way you can make this error occur is if you attempt to post a duplicate value to a unique, non-primary index at the same time you attempt to open the same table. This problem only occurs if local share is set to False and only occurs on local drives.
Unverified solutions
1. Windows 95 Only: Bring up the network properties screen on all Workstations and enter the netBEUI properties screen. On the advanced tab, make sure that «Set this protocol to be the default protocol» is checked.

2. Windows 95 Only: If the previous suggestion did not work, try removing the following protocols in order. Remove one at a time and then re-test your problem:
1. NETBIOS support for IPX/SPX-compatible Protocol
2. TCP/IP
3. IPX/SPX-compatible Protocol If the problem disappears, attempt to add back in all protocols except for the last one that was taken out. Again, make sure netBEUI’s default protocol check box is checked.

3. Windows NT Only used as a Workstation: On the Network Bindings page of the Network Properties, set the NetBEUI Protocol to be at the top of all services. The TCP/IP stack is known for having a lot of overhead that might cause timing problems. Since NT will send requests back in the same protocol as it is sent, changing the bindings on a NT machine used as a server will have no effect.
Other resources
1. {The Delphi Magazine} has a number of interesting articles on this subject as well. See { www.itecuk.com/Delmag/Paradox.htm} for details.

———————————————————————————

Примечание от Vit:
Обычно такие ошибки возникают из-за проблем с кэшированием измений в базе данных, особенно при использовании BLOB/Memo полей и особенно при многопользовательском доступе. В простейшем случае снизить частоту возникновения этой ошибки на несколько порядков помогает вызов метода FlushBuffers после каждого изменения таблицы:

Код
Table1.post;
Table1.FlushBuffers;

Это сообщение отредактировал(а) alex-co — 24.7.2004, 06:38

Понравилась статья? Поделить с друзьями:
  • Index exceeds matrix dimensions матлаб как исправить
  • Index error tuple index out of range
  • Index error string index out of range
  • Index does not exist index valho как исправить ошибку
  • Index 25 size 5 minecraft ошибка