Форум » Clipper » Непонятная ошибка в .CDX индексе » Ответить

Непонятная ошибка в .CDX индексе

Softlog86: Открываем файл базы и стоим индекс ( .CDX ) : USE LAN+"DETAL" NEW ALIAS DETAL EXCLUSIVE INDEX ON CODE TAG CODE TO (LAN+"DETAL") // Код товара INDEX ON UPPER(TYPE) TAG TYPE TO (LAN+"DETAL") // Наименование INDEX ON ACODE TAG ACODE TO (LAN+"DETAL") // Код группы аналогов INDEX ON UPPER(COMMENT) TAG COMMENT TO (LAN+"DETAL") // Описание товара INDEX ON F1 TAG BRANDS TO (LAN+"DETAL") // Код производителя -------------------------------------------------------------------------------------------------- Теперь при попытке изменить содержимое поля F1 (Числовое , код производителя) программа вываливается с ошибкой : _DBFCDX/8006 Обнаружено разрушение данных : BRANDS Не могу понять с чем связано . Раньше всё работало отлично , но только добавил строчку : INDEX ON F1 TAG BRANDS TO (LAN+"DETAL") так и стало вываливаться ..... В сети - один пользователь .

Ответов - 16

Dima: Перед созданием индекса попробуй его удалить если он есть на диске.

Softlog86: Построение индекса идёт с нуля . Разумеется , старый удаляется , а затем идёт построение нового :) Причём переключение на этот TAG идёт , и выборка данных работает . А вот с обновлением поля - сразу вываливается ....

Dima: Softlog86 пишет: А вот с обновлением поля - сразу вываливается .... После редактирования сделай DBCOMMIT()

Softlog86: Вываливается ВОВРЕМЯ записи : RLOCK() REPLACE F1 WITH NewBrand <------ Обнаружено разрушение данных ..... DBUNLOCK()

Dima: А если переключится на тэг CODE и редактировать поле F1 , тоже упадет ? PS А в Harbour падает ?

Pasha: Вот описание этой ошибки: 8006: Old key not found This indicates that a key which should have been in the index was not found when an update on the index was made. The most common cause of this error is opening the same index twice. Specifically, the structural index is automatically opened when the database is opened. Some developers then explicitly open the index again with dbSetIndex(). (If you don't want the structural index to be automatically opened, see cmxAutoOpen()). Another reason for this error is updating a database without having an index open, and then later opening that index and further updating the database (i.e., index out of sync with database).

Pasha: Можно еще поискать по старым темам в comp.lang.clipper, может кто-то решал подобный вопрос https://groups.google.com/forum/#!topicsearchin/comp.lang.clipper/8006

Softlog86: Попробую таким образом : 1) Нашли нужную запись . R:=RECNO() 2) Переключить активный ТAG на другой . 3) Перейти на запись R 4) редактировать запись ----------------------------------------------- удалённых записей в этом файле нет . Но это ерунда какая-то . в этом файле базы работало 15 лет отлично . Переключались Индексы в любом порядке и ничего не рушилось ...... а тут только попытался добавить новый индекс (ТЭГ) и сразу обломчик .....

PSP: Подобная тема: http://clipper.borda.ru/?1-0-0-00000289-000-10001-0-1158314557

Vlad04: INDEX ON F1 TAG BRANDS TO (LAN+"DETAL") f1 попробуй преобразовать в строку

Softlog86: Vlad04 Так и сделал - заработало . Только пришлось по тексту программы менять условия поиска и сравнения .... Вопрос , почему так происходит ? Может есть ограничение по числу индексов в одном файле ? Хотя у меня есть файлы с 10-ю тэгами - и всё работает ...

Dima: Softlog86 пишет: Вопрос , почему так происходит ? Вероятно какой то косяк самого DBFCDX Clipper

Haz: Softlog86 пишет: _DBFCDX/8006 Обнаружено разрушение данных здесь уже были попытки разобраться .... основные выводы 1. Глюк CDX 2. Глюк эмуляции DOS из под винды 3. Нехватка оперативы http://clipper.borda.ru/?1-0-260-00000289-000-10001-0

Vlad04: С Clipper 5.01 я использовал SIX drv. Он то же не любил числовых индексов. Всегда я их преобразовывал в строку.

MIKHAIL: А записываемое число не превышает размер поля F1 ? еще у меня падал NTX при ошибке в программе когда изменял поле при Recno()>lastrec()

Dima: а у меня падало индексирование на больших базах пока к ключу не добавил str(recno(),12)



полная версия страницы