Corrupt table index header как исправить

На чтение 4 мин. Просмотров 113 Опубликовано 15.12.2019

Группа: Участник
Сообщений: 70


Возможно ли восстановление таблицы БД Paradox?
Видимо, некорректно была завершена работа с БД, в результате чего при попытке открытия таблицы вылазит мессага «corrupt table/index header»
Есть ли средства ремонтирования таблиц Paradox’a?

Группа: Администратор
Сообщений: 1190


Возможны 2 ситуации:

1 попортились индексы (индексные файлы .px .XG0, .XG1, YG0 . )
2 повредились сами файлы таблиц ( .db)

1 Сначала попробуйте сделать переиндексацию.
То есть удалите все индексные файлы и проиндексируйте таблицы.
Для этого удобнее всего написать отдельную программу,
которая это делает (через Table1->AddIndex() ).

2 Средство для ремонта таблиц Paradox — сам Paradox
Например Paradox 9, в нем команда «Rebuild»
Но может полностью и не восстановить.

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

Группа: Участник
Сообщений: 247


Еще в Paradox 4 под Dos я делал так.
Удалить, добавить индекс.

Если не помогало.

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

Когда мне это надоело сделал принудительную архивацию таблиц в конце работы программы.

Именно из за этого я бросил рабуту с Paradox.
Очень жаль мне он нравился.

Как можно его отвязать? Удалить сам файл? Как он называется??

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

В одном старом проекте после 6 лет нормальной работы началась такая же херьня.Данные в Paradox-е не нужны, так как это временное хранилище, из которого далее данные ложатся на SQL Server. Но на клиентах нужны работающие БД на Paradox-е. Как программно восстановить индексы? Саму ошибку программно поймать возможно.Как сделать, чтобы их вообще не было — и ничего не портилось бы наверно?

Hi,
When I try to open one of my paradox tables with Database Desktop i get the following error:
«Corrupt table/index header».
Also when I try to add a new record to that table I get «Key violation».
Anyone know what to do?

Premium Content
Premium Content
  • Facebook
  • Twitter
  • LinkedIn
  • https://www.experts-exchange.com/questions/20970230/Corrupt-table-index-header.html copy

You can try to repair the data with a third party tool like Chimney Sweep.

Ok, don’t have the money to buy it!
Is there any freeware product or any other way I can go?

I don’t know of any free tools; although, there may be some. I thought the 30 day evaluation was free but I see that it isn’t. You could try some of the following:

1) Restore a backup, if you have one — before running any Paradox applications use the repair tool (Paradox repair utility).

2) Open the table using restructure, click PACK and then save. If you can do that, try the repair tool again.

3) Create a new table with the same structure and attempt to copy your data into it using ADD. Then run the repair against the new table.

Ensure you’re charging the right price for your IT

Do you wonder if your IT business is truly profitable or if you should raise your prices? Learn how to calculate your overhead burden using our free interactive tool and use it to determine the right price for your IT services. Start calculating Now!

There is also a website that has some bde repair tools; although, I don’t know how well they work.

They have a Paradox Table Repair Utility.

Whatever you decide to do, I would make sure you have a backup.

Thanks for your help, bwdowhan.
At last I found a data repair utility at Torry’s delphi pages.
The app I found was: Pdxrbld — Paradox tables check/repair utility v.4.41b.
I tried it and it work just fine.

bwdowhan post an comment and you will get the points.

It’s nice when things work. I’m glad you found your solution!

I have got some information from one site.

Other third-party tools (freeware and shareware) for repairing Paradox
tables are available at:
http://www.bdesupport.com/tools.htm

IT issues often require a personalized solution. With Ask the Experts™ , submit your questions to our certified professionals and receive unlimited, customized solutions that work for you.

18 / 18 / 8

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

Сообщений: 110

1

28.11.2011, 11:01. Показов 8000. Ответов 15


Студворк — интернет-сервис помощи студентам

поместил на форму элемент table1 в свойстве TableName прописал путь к фалу Foxpro таблицы (*.dbf)
фаил имеет обьем более 300 мегабайт
при попытке добавление полей в редакторе полей выдает ошибку “Corrupt tableindex headr”
Подскажите пожалуйста как это победить



0



568 / 291 / 12

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

Сообщений: 1,326

28.11.2011, 11:12

2

Отказаться от использования dbf.
И пока есть возможность мигрировать на что-то иное.
Вариантов тьма.



1



18 / 18 / 8

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

Сообщений: 110

28.11.2011, 11:17

 [ТС]

3

Друг я dbf не использую для сохранения но для обработке
Смысл програмы в обработке dbf файлов



0



1496 / 1238 / 244

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

Сообщений: 4,357

28.11.2011, 11:24

4

Очень похоже на то, что алиас, который Вы используете для TTable, указывает на БД не того типа (у фокспро свой тип насколько помнится).

Добавлено через 3 минуты
Если Вы используете фокс-файлы для транзита данных (например из одной системы в другую), то ИМХО лучше их (данные) все же преобразовывать в текст (по размеру разница небольшая) с помощью того же фокспро и его уже “перетаскивать”



1



568 / 291 / 12

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

Сообщений: 1,326

28.11.2011, 11:28

5

А я бы для транзита xml использовал. Хороший тон в крупных проектах.
Какого рода обработке?
Заливке данных?



0



1496 / 1238 / 244

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

Сообщений: 4,357

28.11.2011, 11:41

6

xml – полный отстой и тормозищи ! Я бы того кто его выдумал (а заодно и изобретателей хатмеля) повесил на первой же березе



0



568 / 291 / 12

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

Сообщений: 1,326

28.11.2011, 11:55

7

Ну знаешь я не замечал тормозов. Может потому что не гонял большие объемы через него.
В основном межсистемный обмен в рамках одной модульной системы.
Вполне приятные впечатления.
Но тут опять же мы не в курсе что надо ТС.



0



18 / 18 / 8

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

Сообщений: 110

28.11.2011, 12:36

 [ТС]

8

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

А я бы для транзита xml использовал. Хороший тон в крупных проектах.
Какого рода обработке?
Заливке данных?

есть 2 прогрмаы использующие dbf програмы я переделовать не имею права
мне нужно синхронезировать (уровнять) поле в таблицах
грубо говоря берём даные из одной програмы суем её в другую

Добавлено через 1 минуту

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

Очень похоже на то, что алиас, который Вы используете для TTable, указывает на БД не того типа (у фокспро свой тип насколько помнится).

Это может быть вызвана тем что таблица включена в базу даных а я пытаюсь получить доступ обходя фаил dbc напрямую к файлу таблицы?



0



714 / 402 / 33

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

Сообщений: 1,686

28.11.2011, 13:13

9

Скорей всего, вы пытаетесь получить доступ к файлу в момент его использования. Завершите те проги.



0



18 / 18 / 8

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

Сообщений: 110

28.11.2011, 13:23

 [ТС]

10

Цитата
Сообщение от Андрей Борисови
Посмотреть сообщение

Скорей всего, вы пытаетесь получить доступ к файлу в момент его использования. Завершите те проги.

не с этим все нормально



0



1496 / 1238 / 244

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

Сообщений: 4,357

28.11.2011, 15:01

11

Формат dbf имеют множество “баз”, при этом далеко не все они имеют стандарный формат dBase III, IV… Вы же в алиасе указали скорее всего STANDARD, вот и получили..



0



18 / 18 / 8

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

Сообщений: 110

28.11.2011, 18:14

 [ТС]

12

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

Вы же в алиасе указали скорее всего STANDARD, вот и получили..

не ttfoxpro указал



0



1496 / 1238 / 244

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

Сообщений: 4,357

28.11.2011, 18:21

13

В алиасе (BDE Administrator), а не в TTable !



1



6 / 6 / 0

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

Сообщений: 36

29.11.2011, 09:04

14

wason,
Очень хорошо выравнивает проблему с DBF Visual FoxPro, скачай его и открой свой DBF файл. 95% что проблема исчезнет
Хотя данная ошибка (т.е. Corrupt tableindex headr) свойственна Paradox.



1



18 / 18 / 8

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

Сообщений: 110

29.11.2011, 14:43

 [ТС]

15

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

В алиасе (BDE Administrator), а не в TTable !

все верно, создал алиас проблема ушла но это такой ужас

Добавлено через 1 минуту

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

wason,
Очень хорошо выравнивает проблему с DBF Visual FoxPro, скачай его и открой свой DBF файл. 95% что проблема исчезнет
Хотя данная ошибка (т.е. Corrupt tableindex headr) свойственна Paradox.

не я заходил с foxpro таблица была целая
драва надо качать было на фокспро и ставить



0



MsGuns

1496 / 1238 / 244

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

Сообщений: 4,357

30.11.2011, 11:46

16

Delphi
1
все верно, создал алиас проблема ушла но это такой ужас

А BDE – это вообще ТАКОЙ УЖАС !!!
И это понятно,- ей же 100 лет в обед



0



 
serko ©
 
(2006-05-18 22:55)
[0]

Всем ЗДРАСТЕ! У меня есть база Paradox, которая создавалась около 3-х лет, в ней находятся данные о врачах. сейчас там уже больше 2300 записей, и вот недавно произошел глюк! После добавления врача при повторном запуске проги выскакивает ошибка “Corrupt table/index header …”
И пока я не вставлю резервную копия базы прога не заработает! Этот глюк произошел именно при достижении такого числа записей, хотя насколько я знаю это не предел. У меня поле (порядковый номер) на котором установлен Index имеет значение LongInteger.
Это основная проблема! Помогите с ней разобраться!

И еще один вопрос по этой базе! Та же база… Я в Combobox загружаю только имена врачей:

form9.Table1.First;
for k:=1 to form9.Table1.RecordCount do
begin
     form1.ComboBox4.Items.Add(form9.Table1.Fields[1].AsString);
     form9.Table1.Next;
end;

Но тоже в один прекрасный момент (раньше чем первый глюк) в Comboboxe пропадают последние 10 врачей, хотя в самой базе они есть, и form9.Table1.RecordCount совпадает со значением в базе. Как это обяснить? Ато меня тероризируют а я незнаю что ответить! Помогите ПЛИЗ!


 
unknown ©
 
(2006-05-18 23:04)
[1]

Да уж. Парадокс.
Попробуй удалить файлы *.px, *.x , *.y и пересоздай индексы.


 
sniknik ©
 
(2006-05-18 23:15)
[2]

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

у парадокса много ограничений, размер например… при дефаултном BLOCK SIZE (2048) максимальный резмер у созданной таблицы может бать только 128мг. посмотри если у тебя близкое значение значит ты “уперся в максимум” таблицу надо пересоздавать с увеличенным BLOCK SIZE. но это полумеры, не так так иначе но опять “попадеш” ты со своим парадоксом…

> Я в Combobox загружаю только имена врачей:
зачем? есть же DB_xxxxxx аналог, и ничего грузить не надо.

> for k:=1 to form9.Table1.RecordCount do
плохая конструкция для циклу по таблице… используй while not Table1.eof do  вместо нее.


 
аматор ©
 
(2006-05-18 23:21)
[3]

Привет…
1. “Этот глюк произошел именно при достижении такого числа записей” – тута мона поспорить (может быть ошибка в проге).
2. Попробуй “While not Eof do begin”.
И “for k:=1 to form9.Table1.RecordCount do”, в умных книгах писали НИКОГДА на 1 переменные не начинать, нуно 0 ставить. Отсюда “for k:=0 to form9.Table1.RecordCount – 1 do”.


 
sniknik ©
 
(2006-05-18 23:25)
[4]

> в умных книгах писали НИКОГДА на 1 переменные не начинать, нуно 0 ставить.
без разници, хоть for k:=100 to form9.Table1.RecordCount+99 do


 
serko ©
 
(2006-05-18 23:41)
[5]


>  максимальный резмер у созданной таблицы может бать только
> 128мг. посмотри если у тебя близкое значение

У меня база весит всего 539 Кб


> прогу надо переписывать с использованием нормальной базы

А нормальная это какая?


 
sniknik ©
 
(2006-05-18 23:47)
[6]

любая более менее современная, а не заброшенная 10 лет назад… (цифра неправильная, смысл верен 😉
лучше какой нибудь sql сервер, “на вырост”.


 
serko ©
 
(2006-05-18 23:48)
[7]


> > Я в Combobox загружаю только имена врачей:
> зачем? есть же DB_xxxxxx аналог, и ничего грузить не надо.
>

Положил я на Form DBCombobox выбрал DataSourse, выбрал “ВРАЧИ”. И что же дальше? Всего списка нет, есть только первый в списке врач. В items ниче не надо вручную добавлять?


 
serko ©
 
(2006-05-18 23:49)
[8]


> любая более менее современная, а не заброшенная 10 лет назад.
> лучше какой нибудь sql сервер, “на вырост”.

Ну а по конкретнее?


>  (цифра неправильная, смысл верен 😉

Что хочеш сказать что моя база в тупике?


 
sniknik ©
 
(2006-05-19 00:03)
[9]

вообше тебе наверное нужен DBLookupComboBox, а не DBCombobox. не знаю смысла задачи, но судя по тому что выше ты вносиш значения в Combobox…

> Ну а по конкретнее?
не могу, не знаю задачи, но я бы выбирал между MSSQL и Access-ом, просто потому что лучше их знаю, но могу также и IB(/FB), Pervasive, Foxpro, даже Oracle на худой конец… (ну не нравится он мне, ничего не поделать), это если “по быстрому” надо, если нет то лучше чегонибудь новенькое.

> Что хочеш сказать что моя база в тупике?
однозначно.


 
serko ©
 
(2006-05-19 10:16)
[10]


> отвечай, что прогу надо переписывать с использованием нормальной
> базы

Как не верится что кирдык проге и базе пришел! Я же ее 3 года делал и это уже целый проект! Может есть какой то выход?


> >  максимальный резмер у созданной таблицы может бать только
>
> > 128мг. посмотри если у тебя близкое значение
>
> У меня база весит всего 539 Кб

Но 539Кб это же на много меньше чем 128мг


 
MsGuns ©
 
(2006-05-19 11:15)
[11]

Очевидно, что “кирдык” не в парадоксе, а в программке или модели БД. 2300 записей – это курам на смех. У меня есть базы с таблицами по миллиону записей и ничего. Другое дело – какие таблицы ! Если, к примеру, в расчетных по з/пл хранить не указатель на чела, а его ФИО, а вместо кода начисления – его название, то даже на базе в 1000 человек через год такая “база” начнет жутко тормозить, а потом и вообще периодически валиться.

Да еще при такой сугубо локальной технологии, которая описана (наверняка это TTable, правка в гриде и т.д.

Рекоментация: попробовать добавлять “лишние” записи запросом (INSERT INTO). Если все прокатит (99,99%), то переделать прогу на “запросную” технологию. Аргумент типа “3 года разрабатывал, не переделывать же” – ф топку.


 
Desdechado ©
 
(2006-05-19 11:22)
[12]

> Всего списка нет, есть только первый в списке врач
FetchAll или Last;First для справочника врачей


 
Плохиш ©
 
(2006-05-19 11:29)
[13]


> form9.Table1.First;
> for k:=1 to form9.Table1.RecordCount do
> begin
>      form1.ComboBox4.Items.Add(form9.Table1.Fields[1].AsString);
>
>      form9.Table1.Next;
> end;

Увидев этот код сразу подумалось, что парадокс в проблемах не виноват. К тому же есть подозрение, что база используется не одним клиентом, а BDE на этих клиентах не настроено, в частности “NET DIR”.


 
Виталий Панасенко
 
(2006-05-19 11:45)
[14]


> Плохиш ©   (19.05.06 11:29) [13]

Согласен, очень похоже на то…


 
MsGuns ©
 
(2006-05-19 11:48)
[15]

>Плохиш ©   (19.05.06 11:29) [13]

Обратил внимение на код. Да уж, шедевр народного “рукоприкладства”. И это – результат трехлетнего труда ?
ИМХО, ситуация из тех, когда огурец навалял из кучи дерьма некое сооружение, которое со временем стало заваливаться на бок и зорал “караул !”. Когда же ему сказали, что вместо каракулей на обрывке газеты надо использовать нормальный чертеж здания, а вместо фекалий – цемент, песок, кирпич и т.д., прошел убийственный аргумент “Я ж 3 года писал !” и резюме типа “не знаете – не лезьте”.
Кстати, крайней в беде оказалась ни в чем не повинная кельма ;))


 
serko ©
 
(2006-05-19 17:41)
[16]

Ну вы тут вообще меня опустили, и хотите сказать что я ничего особенного не сделал! Это кусочек кода, а вы по нему уже такое ФУУУ прогнали… Зачем же так?


> К тому же есть подозрение, что база используется не одним
> клиентом, а BDE на этих клиентах не настроено, в частности
> “NET DIR”.

Не правильно подозреваете, прога стоит на одном компе и больше она ни где не работает!


> что парадокс в проблемах не виноват

Раз так, то попровьте меня! Что я сделал не правильно? Критиковать все могут, а вот указать что и где не так сделано не всем дано!

С огромным уважением ко всем вам!


 
AlexWlad ©
 
(2006-05-19 18:51)
[17]


> serko ©   (19.05.06 17:41) [16]
>
> Не правильно подозреваете, прога стоит на одном компе и
> больше она ни где не работает!

В таком случае Firebird Embedded самое то!!! Это, что касается где хранить. По работе с данными была в свое время отличная книга, еще для Д2 “Разработка приложений для работы с БД”.


 
аматор ©
 
(2006-05-19 20:59)
[18]

sniknik 4: Вы правы, но этот вариант сюда не катит.
А про код, странно, почему Вы (мастера) это раньше не заметили и ругать позже начали. У serko код изначально прикольный, и если смотреть на кусок кода то мона предположить какой программ. Да, мастера, квалиКфикацию теляем?(Шутка).
serko а кому Вы прогу писали, там платят холосо? Если да, то я согласен написать ещё парочку подобных прог. А, чё через пару лет только оЩибку искать будут, а деньгу сбросят и я се дачку поштрою за бугром, КЛАСС.
А реально, прочитайте книжку по базе (любую, пока (но толстую) :)). И проверьте код проги. Парадокс, как и любая база работает нормально, а если код в проге запороть, то и глючит будет. Ошибка может быть оочень мелкой и при малых “размерах” не заметной, но потом…
With Form9 do begin
 With Table1 do begin
   First;
   While not Eof do begin
    /////////////////издеваемся
     Next;
   end;
 end;
end;
Я не уверен, но может так краше? Ну, есть и другие варианты… Я не прав?


 
serko ©
 
(2006-05-19 23:18)
[19]

Мда… Сказал я себе!
Ну то что лудше использовать While я согласен.
А то в чем моя главная ошибка вы так и не говорите, а просто издеваетесь (как всегда) надо мной!
Может уже пора указать на мои прогоны?


 
serko ©
 
(2006-05-20 00:00)
[20]

Ну вот у меня вроде уже работает и база и прога, но до того момента пока я всю папку исходника вместе с базой не скопировал на тот комп где она должна работать все время! После этого и у меня и на том компе при запуске выскакивает ошибка “Corrupt table/index header …”

Чтоооооооооооооооо это?


 
unknown ©
 
(2006-05-20 00:05)
[21]


> serko ©   (19.05.06 23:18) [19]

[1] уже пробовал?
Дело в том, что в большинстве случаев при работе с парадоксом
ошибки типа Corrupt table/index header и пропадание данных, о
которых известно, что они есть – причина в битом индексе.
PK например.


 
serko ©
 
(2006-05-20 01:07)
[22]


> unknown ©   (20.05.06 00:05) [21]

От блин слепота куринная! Не заметил твой первый пост и морочил себе и всем тут яйца! А выход то проще простого! unknown Спасибо тебе огромное, прога и база пока работает! Тьху-тьху-тьху щоб не сглазить!

А всем остальным пожелаю… ай ладно промолчу! Настроение не охота портить!

unknown ЛУДШИЙ!


iAlexander

  Отправлено: 28.11.2003, 19:00

Дежурный стрелочник

Группа: Участник
Сообщений: 70

Возможно ли восстановление таблицы БД Paradox?
Видимо, некорректно была завершена работа с БД, в результате чего при попытке открытия таблицы вылазит мессага “corrupt table/index header”
Есть ли средства ремонтирования таблиц Paradox’a?
Admin

Отправлено: 29.11.2003, 00:05

Владимир

Группа: Администратор
Сообщений: 1190

Возможны 2 ситуации:

1 попортились индексы (индексные файлы .px .XG0, .XG1, YG0 ….)
2 повредились сами файлы таблиц ( .db)

1 Сначала попробуйте сделать переиндексацию.
То есть удалите все индексные файлы и проиндексируйте таблицы.
Для этого удобнее всего написать отдельную программу,
которая это делает (через Table1->AddIndex() ).

2 Средство для ремонта таблиц Paradox — сам Paradox
Например Paradox 9, в нем команда “Rebuild”
Но может полностью и не восстановить.

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

Nick

  Отправлено: 06.12.2003, 10:00

Машинист паровоза

Группа: Участник
Сообщений: 247

Еще в Paradox 4 под Dos я делал так.
Удалить, добавить индекс.

Если не помогало.

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

Когда мне это надоело сделал принудительную архивацию таблиц в конце работы программы.

Именно из за этого я бросил рабуту с Paradox.
Очень жаль мне он нравился.

bookvar

Отправлено: 08.12.2003, 01:07

Не зарегистрирован

Есть утилита специально для таблиц Paradox. Посылаю в архиве.
Лечит на раз. Есть только с ней одна проблема. Если заголовок поврежден может обнулить таблицу до 2 к.
Я для такого случая писал программульку которая считывала таблицу как бинарный файл и проходила по блокам собирая информацию, создавая новую таблицу, но это только для совсем критических случаев.

INTELLIGENT WORK FORUMS
FOR COMPUTER PROFESSIONALS

Contact US

Thanks. We have received your request and will respond promptly.

Log In

Come Join Us!

Are you a
Computer / IT professional?
Join Tek-Tips Forums!

  • Talk With Other Members
  • Be Notified Of Responses
    To Your Posts
  • Keyword Search
  • One-Click Access To Your
    Favorite Forums
  • Automated Signatures
    On Your Posts
  • Best Of All, It’s Free!

*Tek-Tips’s functionality depends on members receiving e-mail. By joining you are opting in to receive e-mail.

Posting Guidelines

Promoting, selling, recruiting, coursework and thesis posting is forbidden.

Students Click Here

Corrupt table/index header – can this be fixed?

Corrupt table/index header – can this be fixed?

(OP)

24 Oct 06 10:16

I am trying to open a Paradox database and it will not allow me to open the database. The error message is: UNABLE TO OPEN TABLE CORRUPT TABLE/INDEX HEADER

Is there any way possible to fix this?

Thanks,
Naomi

Red Flag Submitted

Thank you for helping keep Tek-Tips Forums free from inappropriate posts.
The Tek-Tips staff will check this out and take appropriate action.

Join Tek-Tips® Today!

Join your peers on the Internet’s largest technical computer professional community.
It’s easy to join and it’s free.

Here’s Why Members Love Tek-Tips Forums:

  • Tek-Tips ForumsTalk To Other Members
  • Notification Of Responses To Questions
  • Favorite Forums One Click Access
  • Keyword Search Of All Posts, And More…

Register now while it’s still free!

Already a member? Close this window and log in.

Join Us             Close

Добавить комментарий