Форум » Clipper » Прога слетает на append и append from » Ответить

Прога слетает на append и append from

Лукашевский: Clipper 5.2e + SixCdx2 + Blinker 7.0 + Protected mode При достаточно большом количестве добавляемых записей (в интервале 150 - 500, всегда по разному) прога слетает с сообщением типа: BLX286: 1313: General Protection Fault либо: DBSKIP(0) Внутренняя ошибка 1210 Отключаю от базы индексы - и всё прекрасно! Но в том-то всё и дело, что индекс нужен, чтобы не добавить то, что в базе уже есть (идёт проверка DBSEEK())... Кто-нибудь с таким фокусом сталкивался? Как бороться?

Ответов - 24, стр: 1 2 All

Лукашевский: SergeJa пишет: USE qqq.dbf SHARED ALIAS A1 INDEX ON A1->Fld TO qqq.NTX USE qqq.dbf SHARED ALIAS A2 SET INDEX TO qqq.NTX Понятно, или надо подробнее? Ничего не понятно... Одна и та же база, один и тот же индекс... Я говорил о ситуации, когда в двух разных базах (если непонятно - двух разных dbf-файлах) есть поле с одинаковым названием (например, поле NAZV в dbf-файле KNIGY.DBF и поле NAZV в dbf-файле SKLAD.DBF), если делать ключевые выражения без алиасов, то при работе и с одной и с другой базой индексы начинают рушиться. SergeJa пишет: цитата: грохается на индексах, в ключах которых непреобразованные поля И...? И ничего пока... Попробовал PADR(), как в первом и четвёртом индексах - не помогло! Может, действительно дело в длине индексной строки? Она получается 90 (NAZV) + 28 (AVTOR) = 118 символов... может, всё нормализуется именно тогда, когда я делаю ширину поля NAZV в базе 70 символов и длина строки получается 98 символов?

armik: Пользуй commit каждые n записей...

Лукашевский: Путём многочисленных экспериментов выяснил, что Dima был абсоблютно прав - всё дело в длине индексного выражения! Если длина индексного выражения больше 117, то прога рано или поздно грохается (причём скорее рано, чем поздно :-( В моем примере с длиной индексного выражения 118 по append from вообще ни одной записи принять не удаётся! armik пишет: Пользуй commit каждые n записей... Поэтому разговор об n записях теряет всяческий смысл...


Dima: Лукашевский пишет: Если длина индексного выражения больше 117 У меня падало и при длине 80....... Решить проблему смог только путем уменьшения длины ключа.



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