Ошибка blob has been modified


Форум программистов Vingrad

Поиск:

Ответ в темуСоздание новой темы
Создание опроса
> BLOB HAS BEEN MODIFIED, ошибка индексации 

:(

   

Опции темы

Sonya
Дата 27.5.2005, 18:59 (ссылка)
   |    (голосов: 0)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Unregistered

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

При удалении одной из записей 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 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Vitaly Nevzorov
****

Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207

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

Код

  Table1.delete;
  Table1.flushbuffers;

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

Это сообщение отредактировал(а) Vit — 27.5.2005, 19:52

———————

With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru

PM MAIL WWW ICQ   Вверх
Sonya
Дата 30.5.2005, 13:53 (ссылка)
   |    (голосов: 0)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Unregistered

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

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

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

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

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

  Вверх
Dynamic
Дата 30.5.2005, 20:28 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Опытный
**

Профиль
Группа: Участник
Сообщений: 372
Регистрация: 5.7.2004
Где: Салехард

Репутация: 2
Всего: 15

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

———————

Было бы о чем молчать, а уж что сказать – всегда найдется…

PM MAIL WWW   Вверх
Vit
Дата 1.6.2005, 14:03 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Vitaly Nevzorov
****

Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207

В Парадоксе или database desktop есть опция — repair table. Индексы там же можно удалить и создать новые

———————

With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru

PM MAIL WWW ICQ   Вверх
Sonya
Дата 2.6.2005, 15:40 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Новичок

Профиль
Группа: Участник
Сообщений: 3
Регистрация: 30.5.2005

Репутация: нет
Всего: нет

Я несколько дней промаялась с базой, перепробовав массу вариантов. Оказалось, что базу пару лет назад востанавливали и была нарушена индексация одной из таблиц. Я в Database Desktop убила индексы и создала новые и все прошло — всмысле ошибка перестала появляться.

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

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

Это сообщение отредактировал(а) Sonya — 2.6.2005, 15:55

PM MAIL ICQ   Вверх
Vit
Дата 3.6.2005, 15:19 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Vitaly Nevzorov
****

Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207

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

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

———————

With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru

PM MAIL WWW ICQ   Вверх



















Ответ в темуСоздание новой темы
Создание опроса
Правила форума «Delphi: Базы данных и репортинг»
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) — крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 

0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »
  1. 15.02.2013, 11:07

    #1

    Ночью встала станция при загрузке базы на 20% выдавала «системная ошибка», залил свежую, все работало.. Сегодня делаем на сервере закрытие дня в r-keeper, процесс заканчивается ошибкой «BLOB has been modified», как востановить работу программы?


  2. 15.02.2013, 11:09

    #2

    sibgaba вне форума


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


    выложите сюда содержимое endday


  3. 15.02.2013, 11:30

    #3


  4. 15.02.2013, 12:05

    #4

    sibgaba вне форума


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


    Порушились BLOB-ы в фалах OPERT.DB и OPERT.MB от второй кассы (папка 14-02-13.02)
    В этих файлах содержится кассовый протокол. Чинить их не вижу особого смысла.
    Поэтому же у вас и ночью ошибка была.

    Для того что бы день закрылся нормально положите в папку 14-02-13.02 чистые файлы OPERT.DB и OPERT.MB из дистрибутива.


  5. 15.02.2013, 12:19

    #5

    У меня нет чистых файлов вроде как.. За информацию спасибо, хотелось бы узнать процесс определения битых блобов.. и как узнать не будет ли той же истории на следующий день, от чего они вообще сыпятся?


  6. 15.02.2013, 12:39

    #6

    sibgaba вне форума


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


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

    У меня нет чистых файлов вроде как..

    Есть. Вы же ночью взяли где то чистый DATABASE. Вот от туда и возьмите чистые OPERT.DB и OPERT.MB

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

    хотелось бы узнать процесс определения битых блобов..

    Открываем файлы редактором (DBD32, DBTOUR и т.п.) и тыкаемся в каждое BLOB поле. Некоторые открываются, некоторые нет и дают вашу ошибку.

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

    и как узнать не будет ли той же истории на следующий день, от чего они вообще сыпятся?

    Узнать очень просто — надо прожить еще один день
    Причины по которым бьются файлы БД различны. Самая простая это в момент транзакции (записи информации в файл) отрубили питание станции. Так же это может быть связано с ошибками чтения/записи на жестком диске. Ошибками памяти. Расположением звезд на небосклоне и курса Мексиканского доллара по отношению к бивалютной корзине…


  7. 15.02.2013, 12:53

    #7

    Еще раз спасибо за ответ! А отчеты не могут быть битыми из за неправильного копирования файлов DATABASE? я копировал все кроме файла system.db, но если есть вероятность того, что некоторые файлы не скопировались, станция все равно запустилась, но закрытие дня на менеджерском компе не происходит? или это только проблемы железа?

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

    Если я заменю файлы на чистые OPERT.DB и OPERT.MB, затем сделаю закрытие дня на менеджерском компе, у меня продажи упадут в очтеты или 14 число пройдет как день без продаж якобы?


  8. 15.02.2013, 13:48

    #8

    sibgaba вне форума


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


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

    Если я заменю файлы на чистые OPERT.DB и OPERT.MB, затем сделаю закрытие дня на менеджерском компе, у меня продажи упадут в очтеты или 14 число пройдет как день без продаж якобы?

    С продажами все будет нормально. Ну будет данных по кассовому протоколу только по этой станции.


  9. 15.02.2013, 17:05

    #9

    Есть мнение, что OPERT.DB OPERT.MB заменять чистыми нельзя, возникнут проблемы, какие могут возникнуть из этого проблемы?


  10. 15.02.2013, 17:18

    #10

    SH вне форума


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

    Аватар для SH


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

    Есть мнение, что OPERT.DB OPERT.MB заменять чистыми нельзя, возникнут проблемы, какие могут возникнуть из этого проблемы?

    Написали же выше:

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

    В этих файлах содержится кассовый протокол.

    Т.е. потеряете протокол за этот день. Но он и так потерян, файлы-то битые.

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

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



Форум программистов Vingrad

> BLOB HAS BEEN MODIFIED, ошибка индексации 

:(

Опции темы

Sonya

Unregistered

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

При удалении одной из записей 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

Vitaly Nevzorov
****

Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207

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

Код

  Table1.delete;
  Table1.flushbuffers;

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

Это сообщение отредактировал(а) Vit — 27.5.2005, 19:52

———————

With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru

Sonya

Unregistered

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

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

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

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

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

  Вверх
Dynamic

Опытный
**

Профиль
Группа: Участник
Сообщений: 372
Регистрация: 5.7.2004
Где: Салехард

Репутация: 2
Всего: 15

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

———————

Было бы о чем молчать, а уж что сказать – всегда найдется…

Vit

Vitaly Nevzorov
****

Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207

В Парадоксе или database desktop есть опция — repair table. Индексы там же можно удалить и создать новые

———————

With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru

Sonya

Новичок

Профиль
Группа: Участник
Сообщений: 3
Регистрация: 30.5.2005

Репутация: нет
Всего: нет

Я несколько дней промаялась с базой, перепробовав массу вариантов. Оказалось, что базу пару лет назад востанавливали и была нарушена индексация одной из таблиц. Я в Database Desktop убила индексы и создала новые и все прошло — всмысле ошибка перестала появляться.

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

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

Это сообщение отредактировал(а) Sonya — 2.6.2005, 15:55

Vit

Vitaly Nevzorov
****

Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207

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

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

———————

With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru



















Правила форума «Delphi: Базы данных и репортинг»
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) — крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »

 
Dolphin

  (2009-09-09 17:49)
[0]

После неудачного закрытия программы стало появляться окошко с ошибкой BLOB has been modified. Из файлов базы — у меня *.DB и *.MB. Как я понимаю картинки переводятся в двуичную систему и сохраняются в *.MB. Можно ли как нибудь теперь достать эти картинки оттуда?


 
Виталий Панасенко(дом)

  (2009-09-10 09:05)
[1]

так достать картинку или вопрос в появлении сообщения?:-)


 
Anatoly Podgoretsky ©

  (2009-09-10 09:37)
[2]

То есть таблица без первичного ключа и каких либо индексов.


 
Anatoly Podgoretsky ©

  (2009-09-10 09:46)
[3]

Кстати в наше время это сделать тяжело, на Борланд убрали все — статьи и утилиты, а на Эмбаркадере не появилось, переход по ссылке на Борланда ведет на Эмбаркадер, а там сообщения что нету. Тут нужна Борландовская утилита по ремонту таблицы, а ее нет, как давно нет и Парадокса — продан Корелу, а Корела вроде тоже уже нет.


 
Виталий Панасенко(дом)

  (2009-09-10 10:28)
[4]

Почему нет? есть DBDOCTOR — русскоязычный, в архиве TUTIL32.DLL и прога.. да и так найти можно и TUTIL.EXE/TUTIL32.DLL тоже на просторах Сети..


 
Anatoly Podgoretsky ©

  (2009-09-10 11:45)
[5]

На просторах сети все можно найти. А вот попробуй найти на официальных сайтах.


 
Dolphin

  (2009-09-10 18:50)
[6]


> так достать картинку или вопрос в появлении сообщения?:-
> )
</Достать картинки. Может есть какая нибудь функция в Delphi?I>


 
Dolphin

  (2009-09-10 19:52)
[7]

Спс всем, кто помогал. База восстановлена с помощью DbDoctor на основе tutil32.dll Но записи в хаотичном порядке. Как можно (может быть програмно или другой программы) поменять местами как они были?


 
Виталий Панасенко(дом)

  (2009-09-10 22:33)
[8]

намек: чтобы упорядочить, нужно активизировать индекс.. а чтобы его активизировать, его нужно построить. см.
> Anatoly Podgoretsky ©   (10.09.09 09:37) [2]
>
> То есть таблица без первичного ключа и каких либо индексов.
>


Corrupt Blob in Order Details Database

‘Blob has been modified’

BLOB is an acronym for “Binary Large OBject”. It is the database term for any (usually large) amount of data that is not a fixed size. In SMS, common BLOB types are

In Paradox, fixed size data is stored in the *.DB file. This file is orderly, fast, indexed, and can be read and written very quickly. In contract, BLOB data in Paradox is stored in the *.MB file.

If you put a BLOB record in the database, the .DB file will have an offset (pointer) saying where in the .MB file the BLOB is stored. It also has a size indicator, to say how many bytes the BLOB is.

Accessing a BLOB file involves finding the record in the .DB file, getting the pointer to the BLOB in the .MB file, reading down the .MB file until you come to the BLOB, and reading the number of bytes specified.

A BLOB Corruption occurs when the pointer into the .MB file does not start or end with a BLOB, and usually means that at least some data may be corrupted or lost.

**High**. This error often corresponds to data lost in the MB file. Because this is usually only the BLOB data (the fixed data in the .DB is not affected), the results of the corruption may not be immediately apparent. Memo fields and image fields should be verified immediately. For orders, the description, production notes, and any images may be lost.

This is usually caused by the .MB and .DB databases getting out of sync. In that respect, it is caused by the same thing that causes an «Index Out of Date» error.

See Also: sms_error_-_index_out_of_date.

  1. Open the database and check recent and past orders for indication of data lost.

  1. Ask customer if they were working in an Estimate or an Order when they got the blob error.

  2. Open the Database Browser.

  3. Navigate to either the Order, and Order Details or Estimate, and Estimate Details table depending on what the customer told you.

  4. Click in the table.

  5. Click the button to take you to the end of the table.

  6. Hit the End key on your keyboard.

  7. Double click on the last (MEMO) record that is capitalized, there are several (MEMO)/(Memo) fields you may have to check

  8. Delete the corrupted message

  9. Move up to the next record and repeat

  1. Select the SQL tab in the DBBrowser

  2. Navigate to either the Order, and Order Details or Estimate, and Estimate Details table depending on what the customer told you.

  3. Click in the table.

  4. Hit the End key on your keyboard.

  5. Record the order of the fields and their names in order from (MEMO) field to the last field in the table, there are several (MEMO)/(Memo) fields you may have to check

  6. Navigate to either the Order, and Order Details or Estimate, and Estimate Details table depending on what the customer told you.

  7. Click in the table.

  8. Click the button to take you to the end of the table.

  9. Hit the End key on your keyboard.

  10. Navigate to either the Order, and Order Details or Estimate, and Estimate Details table depending on what the customer told you.

  11. Click in the table.

  12. Click the button to take you to the end of the table.

  13. Hit the End key on your keyboard.

  14. Select the Advance tab in the SQL tab

  15. Run SQL 1

  16. Click the Execute SQL button

UPDATE "Order Details Database"
SET ModifierXML = ''
WHERE OrderDetailID > 0
Resolution 4 (Get assistance from a Tier 2 Tech)

01.01.2007

Объяснение от Борланд:

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;

We’re getting frequent BlobModifiedWhileReading «409 The blob has been modified while being read» errors when using Loki with azure storage. We’re also getting frequent InvalidBlockList errors similar to #5235.

To Reproduce
Steps to reproduce the behavior: unable to reproduce, seems to happen randomly after a while. It’s more frequent / has bigger spikes after an ingester restarts.

Expected behavior
No errors with azure storage.

failed to flush chunks: store put chunk: -> github.com/Azure/azure-storage-blob-go/azblob.newStorageError, /src/loki/vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_storage_error.go:42
===== RESPONSE ERROR (ServiceCode=BlobModifiedWhileReading) =====
Description=The blob has been modified while being read.
RequestId:d1fe432d-901e-0074-605a-6d0271000000
Time:2023-04-12T16:19:25.6180629Z, Details: 
   Code: BlobModifiedWhileReading
   PUT https://<redacted>.blob.core.windows.net/<redacted>/fake/8ca7e4905318f1f6/1875bd2bf98-1875bd2bf98-46fcd581?comp=blocklist&timeout=31
   Authorization: REDACTED
   Content-Length: [128]
   Content-Type: [application/xml]
   User-Agent: [Azure-Storage/0.14 (go1.19.2; linux)]
   X-Ms-Blob-Cache-Control: []
   X-Ms-Blob-Content-Disposition: []
   X-Ms-Blob-Content-Encoding: []
   X-Ms-Blob-Content-Language: []
   X-Ms-Blob-Content-Type: []
   X-Ms-Client-Request-Id: [55501636-597f-48db-5ddc-281004acf7e0]
   X-Ms-Version: [2020-04-08]
   --------------------------------------------------------------------------------
   RESPONSE Status: 409 The blob has been modified while being read.
   Content-Length: [237]
   Content-Type: [application/xml]
   Date: [Wed, 12 Apr 2023 16:19:25 GMT]
   Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
   X-Ms-Client-Request-Id: [55501636-597f-48db-5ddc-281004acf7e0]
   X-Ms-Error-Code: [BlobModifiedWhileReading]
   X-Ms-Request-Id: [d1fe432d-901e-0074-605a-6d0271000000]
   X-Ms-Version: [2020-04-08]


, num_chunks: 1, labels: {<redacted>}

Corrupt Blob in Order Details Database

‘Blob has been modified’

BLOB is an acronym for “Binary Large OBject”. It is the database term for any (usually large) amount of data that is not a fixed size. In SMS, common BLOB types are

In Paradox, fixed size data is stored in the *.DB file. This file is orderly, fast, indexed, and can be read and written very quickly. In contract, BLOB data in Paradox is stored in the *.MB file.

If you put a BLOB record in the database, the .DB file will have an offset (pointer) saying where in the .MB file the BLOB is stored. It also has a size indicator, to say how many bytes the BLOB is.

Accessing a BLOB file involves finding the record in the .DB file, getting the pointer to the BLOB in the .MB file, reading down the .MB file until you come to the BLOB, and reading the number of bytes specified.

A BLOB Corruption occurs when the pointer into the .MB file does not start or end with a BLOB, and usually means that at least some data may be corrupted or lost.

**High**. This error often corresponds to data lost in the MB file. Because this is usually only the BLOB data (the fixed data in the .DB is not affected), the results of the corruption may not be immediately apparent. Memo fields and image fields should be verified immediately. For orders, the description, production notes, and any images may be lost.

This is usually caused by the .MB and .DB databases getting out of sync. In that respect, it is caused by the same thing that causes an «Index Out of Date» error.

See Also: sms_error_-_index_out_of_date.

  1. Open the database and check recent and past orders for indication of data lost.

  1. Ask customer if they were working in an Estimate or an Order when they got the blob error.

  2. Open the Database Browser.

  3. Navigate to either the Order, and Order Details or Estimate, and Estimate Details table depending on what the customer told you.

  4. Click in the table.

  5. Click the button to take you to the end of the table.

  6. Hit the End key on your keyboard.

  7. Double click on the last (MEMO) record that is capitalized, there are several (MEMO)/(Memo) fields you may have to check

  8. Delete the corrupted message

  9. Move up to the next record and repeat

  1. Select the SQL tab in the DBBrowser

  2. Navigate to either the Order, and Order Details or Estimate, and Estimate Details table depending on what the customer told you.

  3. Click in the table.

  4. Hit the End key on your keyboard.

  5. Record the order of the fields and their names in order from (MEMO) field to the last field in the table, there are several (MEMO)/(Memo) fields you may have to check

  6. Navigate to either the Order, and Order Details or Estimate, and Estimate Details table depending on what the customer told you.

  7. Click in the table.

  8. Click the button to take you to the end of the table.

  9. Hit the End key on your keyboard.

  10. Navigate to either the Order, and Order Details or Estimate, and Estimate Details table depending on what the customer told you.

  11. Click in the table.

  12. Click the button to take you to the end of the table.

  13. Hit the End key on your keyboard.

  14. Select the Advance tab in the SQL tab

  15. Run SQL 1

  16. Click the Execute SQL button

UPDATE "Order Details Database"
SET ModifierXML = ''
WHERE OrderDetailID > 0
Resolution 4 (Get assistance from a Tier 2 Tech)

 
Dolphin
 
(2009-09-09 17:49)
[0]

После неудачного закрытия программы стало появляться окошко с ошибкой BLOB has been modified. Из файлов базы — у меня *.DB и *.MB. Как я понимаю картинки переводятся в двуичную систему и сохраняются в *.MB. Можно ли как нибудь теперь достать эти картинки оттуда?


 
Виталий Панасенко(дом)
 
(2009-09-10 09:05)
[1]

так достать картинку или вопрос в появлении сообщения?:-)


 
Anatoly Podgoretsky ©
 
(2009-09-10 09:37)
[2]

То есть таблица без первичного ключа и каких либо индексов.


 
Anatoly Podgoretsky ©
 
(2009-09-10 09:46)
[3]

Кстати в наше время это сделать тяжело, на Борланд убрали все — статьи и утилиты, а на Эмбаркадере не появилось, переход по ссылке на Борланда ведет на Эмбаркадер, а там сообщения что нету. Тут нужна Борландовская утилита по ремонту таблицы, а ее нет, как давно нет и Парадокса — продан Корелу, а Корела вроде тоже уже нет.


 
Виталий Панасенко(дом)
 
(2009-09-10 10:28)
[4]

Почему нет? есть DBDOCTOR — русскоязычный, в архиве TUTIL32.DLL и прога.. да и так найти можно и TUTIL.EXE/TUTIL32.DLL тоже на просторах Сети..


 
Anatoly Podgoretsky ©
 
(2009-09-10 11:45)
[5]

На просторах сети все можно найти. А вот попробуй найти на официальных сайтах.


 
Dolphin
 
(2009-09-10 18:50)
[6]


> так достать картинку или вопрос в появлении сообщения?:-
> )
</Достать картинки. Может есть какая нибудь функция в Delphi?I>


 
Dolphin
 
(2009-09-10 19:52)
[7]

Спс всем, кто помогал. База восстановлена с помощью DbDoctor на основе tutil32.dll Но записи в хаотичном порядке. Как можно (может быть програмно или другой программы) поменять местами как они были?


 
Виталий Панасенко(дом)
 
(2009-09-10 22:33)
[8]

намек: чтобы упорядочить, нужно активизировать индекс.. а чтобы его активизировать, его нужно построить. см.
> Anatoly Podgoretsky ©   (10.09.09 09:37) [2]
>
> То есть таблица без первичного ключа и каких либо индексов.
>


Понравилась статья? Поделить с друзьями:
  • Ошибка bootmgr is missing что делать
  • Ошибка blinitializelibrary failed 0xc00000bb при запуске компьютера
  • Ошибка bootmgr is missing при установке
  • Ошибка blind spot syst function red 160
  • Ошибка bootmgr is missing windows 10