![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Индексы в paradox
norman © (2004-02-11 00:14:00)
Есть программа, написанная на Delphi 3? работает с базой в paradox7 через BDE под системой w2k.
Полгода работала-работала и вдруг сбились индексы (при запуске пишет index out of date).
Таблица не открывается в Database desktop. Вручную снес файлы индексов. Таблица открылась. Создал заново индексы. Не работает.
После утомительной отладки нарисовалась такая картина:
Каждая новая запись командой insert добавляется ПЕРЕД ПОСЛЕДНЕЙ записью таблицы (если смотреть в database desktop естественный порядок записей). При этом после первой же вставки записи программа снова кричит, что индексы полетели и не хочет работать.
ВРУЧНУЮ в database desktop создал аналогичную по структуре новую пустую таболицу. Та же картина: одна запись добавляется без проблем, все остальные лезут перед ней и индекс портится.
А однажды при отладке выскочила ошибка, точного текста не помню, но смысл такой: index is read only. Еще заметил, что после вставки записи не обновляются дата и время изменения индексных файлов, сам файл таблицы db обновляется. В общем, склоняюсь к тому, что индексные файлы как-то заблокированы для изменения.
Может ли это быть?
BDE переставил.
Что дальше делать, пока не знаю.
Если поможете советом, буду благодарен.
norman (2004-02-13 01:14:00) [1]
А все-таки как?
norman (2004-02-11 23:51:00) [2]
А если в обработчике исключения index out of date на лету грохнуть все индексы и их пересоздать.
Попробовал.
Из программы методом deleteindex не удалается Primary Key.
Пробовал удалить сам файл *.px.
Но потом методом addindex не могу создать primary key.
Пишет object not locked.
Свойство table1.exclusive=true.
(table1.addindex("","field1,[ixPrimary,ixUnique]) или я что-то путаю).
Не подскажете, как на лету создать primary key?
Заранее спасибо.
Anatoly Podgoretsky (2004-02-11 22:57:00) [3]
Самый надежный метод с головной болью, это что болит, то и отрубить, но ты говришь что это невозможно, Так что придется тебе с этим мириться.
norman (2004-02-11 21:43:00) [4]
Позор на мою голову!
И правда, забыл построить primary key.
Все доделал, проверил, заработало.
Благодарю.
Меня немного оправдывает только то, что изначально давным давно эту базу создавал не я, а мне она досталась с готовой структурой, которую я до этого случая не трогал.
Вопрос в догонку.
А можно ли как-то защититься от слетающих индексов в paradox.
На опыте заметил, что дело это не столь редкое.
Может посоветуют что-либо бывалые.
Не надо только предлагать переходить на что-нибудь другое.
Программа давно отлажена и работает не первый год. Не хочется все ломать (как говорил один танкист: "Не трогай технику, и она не подведет").
На новых разработках я paradox не использую.
Виталий Панасенко (2004-02-11 09:44:00) [5]
И проверь, может забыл построить Primary key ? а только вторичные (*.x??/*.y??)? Если нет *.рх, то вторичные только для просмотра таблиц, менять ничего нельзя...
Anatoly Podgoretsky (2004-02-11 09:09:00) [6]
Может но маловероятно, особо если исходить из проверки в DBD, проверь аттрибуты файлов. Самое вероятно, что ты неправильно создал индексы.