Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > BLOB HAS BEEN MODIFIED


Автор: Sonya 27.5.2005, 18:59

Неразрешимая проблема!!!
Пожалуйста помогите кто может.

При удалении одной из записей PARADOX таблицы выдается ошибка BLOB HAS BEEN MODIFIED, причем выдается при выборе совершенно другой записи

На похожую проблему нашла у вас на форуме решение - цитата из англоязычного справочника:

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/

Если это и есть решение моей проблемы, то подскажите как выполнить пункты 2. и 3.

Автор: Vit 27.5.2005, 19:50
Соня, во-первых поменяйте клавиатуру - у вас Caps-Lock западает... Во-вторых, попробуйте после ЛЮБЫХ изменений таблицы (Post, Delete и т.п. ) сбрасывать буффера ввода-вывода на диск, что-то типа Table1.flushbuffers


Код

  Table1.delete;
  Table1.flushbuffers;


Описанное решение - поможет восстановить базу данных, но не решить проблему возникновения этой ошибки в будущем

Автор: Sonya 30.5.2005, 13:53
Об этой процедуре (flushbuffers) я уже читала у вас на форуме, в моем случае она не помогает
Все оказалось сложнее и запущеней :(

ошибка появляется даже при работе с базой в других приложениях -- Database Explorer или DataBase Desktop

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

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

Подскажите что можно сделать.
Возможно необходима переиндексация, если да то как ее сделать

Автор: Dynamic 30.5.2005, 20:28
При удалении записи, содержащей BLOB, сначала удали значение из этого поля, а потом все остальные (можно в OnBeforeDelete).

Автор: Vit 1.6.2005, 14:03
В Парадоксе или database desktop есть опция - repair table. Индексы там же можно удалить и создать новые

Автор: Sonya 2.6.2005, 15:40
Я несколько дней промаялась с базой, перепробовав массу вариантов. Оказалось, что базу пару лет назад востанавливали и была нарушена индексация одной из таблиц. Я в Database Desktop убила индексы и создала новые и все прошло - всмысле ошибка перестала появляться.

Спасибо всем за помощь!

Я много лет пользуюсь интернетом, но первый раз посетила форум (и то только потому что "припекло"). Я в восторге! И даже зарегистрировалась!

Автор: Vit 3.6.2005, 15:19
Цитата(Sonya @ 2.6.2005, 06:40)
Я много лет пользуюсь интернетом, но первый раз посетила форум (и то только потому что "припекло"). Я в восторге! И даже зарегистрировалась!



Всегда рады и помочь и новым участникам!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)