Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Целостность ветки глобала, битый индекс
|
|||
|---|---|---|---|
|
#18+
Добрый день! Давно читаю форум, но со своей проблемой впервые решила к вам обратится. Подскажите пожалуйста, кто сталкивался с такой ситуацией. Версия Cache 4.1.3. Проверка на целостность не дает ошибок - ни в целом база, ни конкретный глобал. Но! Когда проходим глобал по $o на битом индексе цикл вылетает с ошибкой <SUBSCRIPT>, сам индекс я не знаю и как его определить пока не придумала. При экспорте глобала в разных вариантах смогла добиться ошибки ОШИБКА #570: Глобал ^FC содержит управляющие символы. Восстановление этого глобала может завершиться неудачей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2011, 12:30 |
|
||
|
Целостность ветки глобала, битый индекс
|
|||
|---|---|---|---|
|
#18+
pandorrayНо! Когда проходим глобал по $o на битом индексе цикл вылетает с ошибкой <SUBSCRIPT>, сам индекс я не знаю и как его определить пока не придумала. Выдайте индексы по $o на терминал - узнаете предыдущий перед битым - может наведет на мысль :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2011, 12:43 |
|
||
|
Целостность ветки глобала, битый индекс
|
|||
|---|---|---|---|
|
#18+
ser_shu, пробовала, но индекс там не инкремент. Поэтому не особо помогает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2011, 12:56 |
|
||
|
Целостность ветки глобала, битый индекс
|
|||
|---|---|---|---|
|
#18+
pandorrayНо! Когда проходим глобал по $o на битом индексе цикл вылетает с ошибкой <SUBSCRIPT>, сам индекс я не знаю и как его определить пока не придумала. На экран его выводить. Либо в значение какого-либо глобала... <SUBSCRIPT> может давать на "длинном" индексе... Хотя не понять как он туда записался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2011, 13:35 |
|
||
|
Целостность ветки глобала, битый индекс
|
|||
|---|---|---|---|
|
#18+
krvsa, Вот в том то и дело, что он его не берет и вывести его не могу. 9786**1000***** ; предыдущий индекс FOR S a=$O(^FC("Spr","SPR",1,a)) Q:a="" W a,! ^ <SUBSCRIPT> а вот следующий уже не берет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2011, 13:44 |
|
||
|
Целостность ветки глобала, битый индекс
|
|||
|---|---|---|---|
|
#18+
pandorray , а если твой глобал с помощью $QUERY покрутить? Хотя тот же <SUBSCRIPT> можно получить... Попробуй тот глобал в xml файл записать... Чего будет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2011, 13:50 |
|
||
|
Целостность ветки глобала, битый индекс
|
|||
|---|---|---|---|
|
#18+
krvsa, $QUERY дает тот же <SUBSCRIPT> А насчет выгрузки в xml можно поподробнее? Это вы про экспорт? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2011, 14:43 |
|
||
|
Целостность ветки глобала, битый индекс
|
|||
|---|---|---|---|
|
#18+
да экспорт но в XML d $system.OBJ.Export("FC.GBL","c:\fc.xml") ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2011, 14:53 |
|
||
|
Целостность ветки глобала, битый индекс
|
|||
|---|---|---|---|
|
#18+
DAiMor , увы... BAZ>d $system.OBJ.Export("FC.GBL","c:\fc.xml") Экспорт в XML начался в 08/15/2011 13:55:26 Экспортируемый глобал: ^FC <SUBSCRIPT>outputClass+178^%occXMLExport Из-за чего вообще мог появится такой индекс? И как с этим бороться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2011, 15:01 |
|
||
|
Целостность ветки глобала, битый индекс
|
|||
|---|---|---|---|
|
#18+
pandorray , прискорбно... Если "программно" никак до того значения индекса не добраться - остаётся ждать любителей поколупаться в блоках "напрямую"... Как такое получается я х/з... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2011, 15:37 |
|
||
|
Целостность ветки глобала, битый индекс
|
|||
|---|---|---|---|
|
#18+
krvsa , все равно спасибо за помощь) Буду ждать! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2011, 15:48 |
|
||
|
Целостность ветки глобала, битый индекс
|
|||
|---|---|---|---|
|
#18+
остается самый простой вариант, это копировать весь глобал в другой с пропуском ошибок, удалить старый глобал и заменить его на скопированный новый таким копированием вы маловероятно что потеряется важные данные, вы и так к ним не имеете доступа с 4.1.3 поработать не пришлось, так что могу ошибиться и дать неработающий код ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2011, 15:49 |
|
||
|
Целостность ветки глобала, битый индекс
|
|||
|---|---|---|---|
|
#18+
Ну, ламерский способ это написать программу с обходом глобала и копированием отдельных строк в другой глобал, а потом обойти в обратном направлении и тоже до ошибки. Ну а более интересный - это d ^REPAIR, только лучше базу забэкапить, а то шансы ее добить больше шансов восстановить. Перед этим выполните ^INTEGRIT, чтобы узнать номера сбойный блоков и оттуда плясать. Совет от себя - рисуйте связи блоков на бумаге, в памяти это удержать очень сложно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2011, 15:50 |
|
||
|
Целостность ветки глобала, битый индекс
|
|||
|---|---|---|---|
|
#18+
DAiMorостается самый простой вариант, это копировать весь глобал в другой с пропуском ошибок, удалить старый глобал и заменить его на скопированный новый Во-во. Такое же хотел сейчас написать... Пройтись копированием "от начала" до ошибки... А потом "от конца" до ошибки... Правда тех ошибок может быть несколько... Тогда потеряется часть данных, что "внутри". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2011, 15:56 |
|
||
|
Целостность ветки глобала, битый индекс
|
|||
|---|---|---|---|
|
#18+
Блок А.Н. , у меня появилось несколько вопросов. 1) do ^INTEGRIT - не выдает ошибки 2) do ^REPAIR - с помощью этого я нашла 2 записи, которые у меня битые Они даже как то странно в терминале вывелись, откуда многоточия???? ^FC("Spr","SPR",1,"9787*1*56*30*"...) ^FC("Spr","SPR",1,"9787*1*56*50*"...) Остальные записи в виде ^FC("Spr","SPR",1,"9790*101*1517*****") вопрос состоит в том, как их можно исправить по нормальному или только скопировать до/после? Просто записи очень надо восстановить... А текстовка там вывелась как ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2011, 16:30 |
|
||
|
Целостность ветки глобала, битый индекс
|
|||
|---|---|---|---|
|
#18+
REPAIR восстанавливает блочную целостность, интегрит проверят ее же. Значит с этим все нормально, просто в самом глобале что-то не то. А вы настрояки локали, языков не меняли? Если попробовать поднять базу на UTF8 кодировке? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2011, 17:17 |
|
||
|
Целостность ветки глобала, битый индекс
|
|||
|---|---|---|---|
|
#18+
И такую ситуацию удалось обнаружить только уже целеустремленным поиском, когда стало известно в какой ветке глюк происходит. А как быть если неизвестно где такой битый индекс? База под 8Гб, не будешь же каждый глобальчик в $order пропускать. Есть какие то другие пути решения? (с учетом того что проверка целостности говорит что все-все цело). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2011, 17:20 |
|
||
|
Целостность ветки глобала, битый индекс
|
|||
|---|---|---|---|
|
#18+
Блок А.Н.REPAIR восстанавливает блочную целостность, интегрит проверят ее же. Значит с этим все нормально, просто в самом глобале что-то не то. А вы настрояки локали, языков не меняли? Если попробовать поднять базу на UTF8 кодировке? Ничего не меняли. Насчет кодировки UTF8 не могу ничего сказать - надо будет проверить. ПО работало довольно долго стабильно. Откуда появились такие битые индексы??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2011, 17:22 |
|
||
|
Целостность ветки глобала, битый индекс
|
|||
|---|---|---|---|
|
#18+
pandorrayОни даже как то странно в терминале вывелись, откуда многоточия???? ^FC("Spr","SPR",1,"9787*1*56*30*"...) ^FC("Spr","SPR",1,"9787*1*56*50*"...) Остальные записи в виде ^FC("Spr","SPR",1,"9790*101*1517*****") похоже на индексацию набора полей, разделенных *. Тогда, скорее всего в наборе полей "9787*1*56*30*"... в пятом поле попал спецсимвол, который потом попал в индекс. Если у Вас такая структура - попробуйте найти эти данные, исправить и снова записать индекс. Только желательно в этом поле со спецсимволом точно определить содержимое, чтобы уничтожить "плохой" индекс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2011, 17:45 |
|
||
|
Целостность ветки глобала, битый индекс
|
|||
|---|---|---|---|
|
#18+
pandorray , Почему записались неверные данные сейчас сложно сказать, но можно попробовать в рамках процесса временно включить NullSubscripts и посмотреть исчезнет ли ошибка <SUBSCRIPT> при проходе по глобалу: $ZUTIL(68,1) -- Null Subscript Mode Process Switch PS: я сейчас в отпуске и очередной раз ответить смогу ближе к октябрю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2011, 18:05 |
|
||
|
Целостность ветки глобала, битый индекс
|
|||
|---|---|---|---|
|
#18+
ser_shupandorrayОни даже как то странно в терминале вывелись, откуда многоточия???? ^FC("Spr","SPR",1,"9787*1*56*30*"...) ^FC("Spr","SPR",1,"9787*1*56*50*"...) Остальные записи в виде ^FC("Spr","SPR",1,"9790*101*1517*****") похоже на индексацию набора полей, разделенных *. Тогда, скорее всего в наборе полей "9787*1*56*30*"... в пятом поле попал спецсимвол, который потом попал в индекс. Если у Вас такая структура - попробуйте найти эти данные, исправить и снова записать индекс. Только желательно в этом поле со спецсимволом точно определить содержимое, чтобы уничтожить "плохой" индекс. В пятом поле не должен был попасть спецсимвол - там должно было быть число, но чем черт не шутит) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2011, 09:51 |
|
||
|
Целостность ветки глобала, битый индекс
|
|||
|---|---|---|---|
|
#18+
servit pandorray , Почему записались неверные данные сейчас сложно сказать, но можно попробовать в рамках процесса временно включить NullSubscripts и посмотреть исчезнет ли ошибка <SUBSCRIPT> при проходе по глобалу: $ZUTIL(68,1) -- Null Subscript Mode Process Switch PS: я сейчас в отпуске и очередной раз ответить смогу ближе к октябрю. Спасибо за совет. Проверила. Но увы... Ошибка <SUBSCRIPT> все равно выскакивает при проходе по глобалу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2011, 09:52 |
|
||
|
Целостность ветки глобала, битый индекс
|
|||
|---|---|---|---|
|
#18+
Скорее всего ошибка в индексе ^FC("Spr","SPR",1,"9787*1*56*40*"...) Точки указывают на наличие спец.символов. Если обход по Qwery то вырежи индекс потом выведи его на экран затем выведи скан коды этого индекса через функцию $A() и посмотри какие коды в действительности записаны в индекс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2011, 06:51 |
|
||
|
Целостность ветки глобала, битый индекс
|
|||
|---|---|---|---|
|
#18+
misha_shar, как же она вырежет индекс, если прога вылетает по <SUBSCRIPT>. Кстати, начиная с Cache 4.1 (с появлением "нового" формата БД), запрет на управляющие символы в индексах был снят. Например, Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2011, 10:55 |
|
||
|
Целостность ветки глобала, битый индекс
|
|||
|---|---|---|---|
|
#18+
Alexey Maslovmisha_shar, как же она вырежет индекс, если прога вылетает по <SUBSCRIPT>. Кстати, начиная с Cache 4.1 (с появлением "нового" формата БД), запрет на управляющие символы в индексах был снят. Например, Код: plaintext Вы, правы, я проверяла вот таким методом, и все индексы читаются в проводнике, проходятся по $o Код: plaintext 1. 2. 3. 4. 5. 6. 7. Поэтому я и понять не могу что ж за символ туда мог попасть... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2011, 11:07 |
|
||
|
|

start [/forum/topic.php?fid=39&msg=37396039&tid=1557645]: |
0ms |
get settings: |
8ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
141ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 247ms |
| total: | 450ms |

| 0 / 0 |
