Перевод database disk image is malformed

Восстановление журнала регистрации


Проблема

sqlite3_step failed: database disk image is malformed
db: C:\ut11\1Cv8Log\1Cv8.lgd

Или другие ошибки связанные с sqlite.

Причина

Причиной ошибок sqlite может служить повреждение данных в файле журнала регистрации. Способ решения этой проблемы описан в данной статье. О том, что Вы столкнулись именно с этой проблемой говорит ошибка database disk image is malformed . При этом она может быть скрыта другими ошибками sqlite. Когда пользователи получают ошибки sqlite, следует искать ошибку database disk image is malformed в журналах клиентских приложений (для файлового варианта) или менеджеров кластера. Она будет указана в журнале в виде:

16:29.504002-0,EXCP,0,process=rmngr,Exception=EventLogException,Descr=’sqlite3_exec failed: database disk image is malformed
db: C:\Program Files\1cv8\srvinfo\reg_1541\50b80b42-24a3-4f33-8508-5672acb80621\1Cv8Log\1Cv8.lgd sql: PRAGMA journal_mode = OFF’

Такая ошибка означает, что файл журнала регистрации, указанный в ошибке, поврежден.

Решение


Утилита командной строки sqlite

Для Windows утилиту нужно скачать отсюда.

Для Linux следует использовать утилиту, доступную в официальных репозиториях.

Восстановление

ВНИМАНИЕ! Все нижеследующие операции обязательно производите над копией файла журнала регистрации

  • Остановите кластер «1С:Предприятия» или завершите все клиенты для файлового варианта.
  • Скопируйте испорченный файл 1Cv8.lgd в отдельную директорию. Например, «C:\LogRestore».
  • Туда же разархивируйте sqlite3.exe из архива, который скачале ранее.
  • В командной строке перейдите в рабочую директорию («C:\LogRestore»).
  • Выполните команду:

sqlite3 1Cv8.lgd .dump >> backup.sql

  • Откройте файл backup.sql. Он может быть большой и MS Notepad его может не открыть. В этом случае воспользуйтесь, например, Notepad++.
  • Если самой последней строкой у вас является «ROLLBACK;» — замените ее на «COMMIT;» и сохраните файл.
  • Переименуйте файл 1Сv8.lgd в текущей директории в 1Cv8-orig.lgd.
  • В этой же директории выполните команду:

    При этом могут выводиться ошибки. Это нормально.

  • Откройте файл 1Сv8.lgd Конфигуратором пустой файловой базы. Убедитесь, что данные сохранены.
  • Замените испорченный файл в том месте, где он был изначально на 1Cv8.lgd из текущей директории.
  • Источник

    Переключение журнала регистрации в старый формат

    Переключение журнала регистрации в старый формат

    Введение

    Новый формат журнала регистрации был реализован в платформе 1С:Предприятие 8 в версии 8.3.5.1068. Начиная с этой версии при создании новой информационной базы журнал регистрации будет храниться в одном файле базы данных SQLite с расширением .lgd, который располагается:

    • Для файлового варианта информационной базы – в подкаталоге 1Cv8Log каталога информационной базы.
    • Для клиент-серверного варианта информационной базы – в подкаталоге 1Cv8Log каталога информационной базы в каталоге служебных файлов кластера. Имя каталога можно определить по файлу реестра данных кластера.

    Целью переработки журнала регистрации и перевода его в новый формат было увеличение скорости выполнения запросов к нему и повышение надежности хранения данных. Новость об этом была размещена на официальном ресурсе фирмы 1С. Обновление платформы до версии 8.3.5.1068 и выше не приводит к автоматическому переводу журнала регистрации в новый формат у уже созданных информационных баз. Но при этом имеется возможность смены формата на новый штатными средствами платформы. Для этого следует открыть диалог настройки журнала регистрации (Главное меню –> Администрирование –> Настройка журнала регистрации) и нажать кнопку «Новый формат».

    Проблемы при работе с новым форматом журнала регистрации

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

    Итак, одна из проблем возникает после перезапуска кластера серверов или аварийного завершения работы менеджера кластера. При этом возможно разрушение структуры файла журнала регистрации .lgd. При попытке открыть такой журнал регистрации происходит ошибка:

    sqlite3_step failed: database disk image is malformed

    Также иногда можно заметить проявление следующей ошибки при попытке в конфигураторе открыть файл журнала регистрации нового формата:

    sqlite3_exec failed: attempt to write a readonly database

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

    81029657-3fe6-4cd6-80c0-36de78fe6657: Передача данных прервана по инициативе принимающей стороны.’

    Данная строка ТЖ говорит о том, что процесс rmngr центрального сервера не отвечает, так как занят работой с журналом регистрации. И далее в технологическом журнале можно видеть следующие записи:

    0,EXCP,0,process=rmngr,p:processName=RegMngrCntxt,p:processName=ServerJobExecutorContext,Exception=81029657-3fe6-4cd6-80c0-36de78fe6657, Descr=’src\RMngrCalls.cpp(549):
    81029657-3fe6-4cd6-80c0-36de78fe6657:server_addr=tcp://[сервер]:[порт] descr=Сервер недоступен (Не отвечает, завершается аварийно или порт занят другим приложением) line=1073 file=src\DataExchangeTcpClientImpl.cpp’

    Помимо этого, достаточно часто возникает проблема с высоким потреблением памяти журналом регистрации в новом формате. Данное поведение проявляется, например, если кто-то из пользователей случайно запустит выборку по ЖР без ограничения по периоду. При этом весь журнал регистрации попадет в память, вытеснит весь кэш и «положит» сервер.

    Данные проблемы являются достаточно критичными и при их проявлении рекомендуется перевести журнал регистрации в старый формат.

    Перевод журнала регистрации в старый формат

    Штатные средства платформы 1С не позволяют перевести журнал регистрации из нового формата в старый. Здесь мы опишем способ, который позволит выполнить данную задачу вручную. Итак, для начала необходимо остановить службу 1С. При этом, необходимо согласовать данное действие с пользователями, так как при этом они не смогут работать с информационными базами, которые находятся в соответствующих кластерах 1С.

    После того как служба 1С остановлена, переходим в каталог файлов информационной базы для которой необходимо изменить формат журнала регистрации. Данный каталог выглядит следующим образом:

    …\1cv8\[каталог служебных файлов службы 1С, обычно srvinfo]\reg_ + [номер порта менеджера кластера]\[UUID информационной базы]

    Уникальный идентификатор информационной базы (UUID) можно получить из файла «1CV8Clst.lst», который располагается в каталоге реестра кластера. Для быстрого получения идентификаторов баз и их имен из файла реестра кластера можно воспользоваться следующим регулярным выражением:

    Далее в каталоге файлов информационной базы ищем папку «1Cv8Log» и переносим оттуда все файлы в отдельный каталог. Затем в папке «1Cv8Log» создаем пустой файл журнала регистрации в старом формате «1Cv8.lgf».

    После того как все этапы данной процедуры выполнены, запускаем службу 1С. Готово, теперь журнал регистрации переведен в старый формат. Чтобы обратно вернуться к новому формату ЖР воспользуйтесь инструкцией, описанной во введении данной статьи.

    Заключение

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

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

    Источник

    Database image malformed

    Иногда в процессе работы при совершении операции, программа начинает без видимых причин выдавать ошибку «database disk image is malformed», и совершение операций в программе (продажи, закупки , списание и т.д.) становится невозможным.

    Эта ошибка может случиться по разным причинам, например:

    • Поломка жесткого диска компьютера
    • Перенос базы данных программы на сломанной флешке
    • Одновременная работа нескольких программ в одной однопользовательской базе данных
    • И т.п.

    Главная проблема состоит в том, что эта ошибка — внесение неправильных данных в базу данных программы — обычно проявляется не в тот момент, когда эти самые неправильные данные были внесены в БД, а позже, когда программа начинает заполнять данными сбойный кусок базы данных. Т.е. от момента возникновения ошибки в базе до её обнаружения, может пройти какое то время. Есть несколько возможных способов восстановить повреждённые данные.

    Первый способ лечения: Перегрузить все данные в новую базу данных

    1. Определите, в каком режиме работает программа на этой компьютере: однопользовательском или сетевом. Сделать это можно, выбрав в программе пункт меню Файл|Настройки|Сеть:

    2. Скачайте специальную программу для выгрузки базы данных. Скачать эту программу можно по вот этой ссылке. Эту программу нужно будет сохранить в ту папку, куда установлена программа Тирика-Магазин. Если у вас не получается сохранить этот файл в эту папку (иногда Windows 7 и старше бывает настроена так, что сделать это непросто), то вот тут вы можете прочитать, как обойти это ограничение.

    3. Закройте программу Тирика-Магазин и запустите программу vygruzka-dannyh.bat. Это та самая программа, которую вы скачали с нашего сайта в п.2 выше. Запускать ее нужно, открыв Проводник Windows (т.е. дважды щелкнув иконку «Мой Компьютер» или просто «Компьютер»), найдя папку, в которую вы сохранили эту программу, и щелкнув дважды мышкой по этой программе.

    4. Дождитесь, когда программа закончит работу. По окончании работы программы покажет либо сообщение о том, что выгрузка данных успешно завершена, либо сообщение об ошибке.

    5. Если выгрузка прошла без ошибки, то нужно заменить текущую базу на чистую новую. О том, где находится база данных программы, которую надо заменить на чистую базу данных, написано здесь. Чистую базу данных для сетевого режима работы программы вы можете скачать здесь, для однопользовательского — здесь. Предварительно сделайте на всякий случай резервную копию текущей базы данных для того, чтобы в случае, если Вас не удовлетворит результаты работы, Вы смогли вернуть всё назад и попробовать следующий способ. О том, как зделать резервную копию базы данных, написано здесь.

    6. Скачайте специальную программу для загрузки базы данных. Скачать эту программу можно по вот этой ссылке. Эту программу нужно будет сохранить в ту папку, куда установлена программа Тирика-Магазин.

    7. Запустите программу zagruzka-dannyh.bat. Это та самая программа, которую вы скачали с нашего сайта в п.6 выше. Запускать ее нужно, открыв Проводник Windows (т.е. дважды щелкнув иконку «Мой Компьютер» или просто «Компьютер»), найдя папку, в которую вы сохранили эту программу, и щелкнув дважды мышкой по этой программе

    8. Дождитесь, когда программа закончит работу. По окончании работы программы она покажет либо сообщение о том, что загрузка данных успешно завершена, либо сообщение об ошибке.

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

    Второй способ лечения: Восстановление из резервной копии

    Этот способ восстановления базы из резервной копии, за предыдущую дату. Программа делает периодически резервные копии баз данных, вот тут написано, как восстановить данные из резервной копии базы данных.

    Проблема, однако, заключается в том, что мы не знаем, когда на самом деле в базу данных программы были внесены ошибочные данные, проявившиеся в виде ошибки database image is malformed только сейчас и, соответственно, не знаем, на какую резервную копию нужно откатываться. Может случиться так, что вы откатитесь на резервную копию базы данных, сделанню неделю назад (потеряв при этом все данные, введенные в программу за эту неделю), и через неделю увидите то же сообщение об ошибке, т.к. сама ошибка могла быть внесена в базу данных не одну, а две недели назад.

    Третий способ лечения: Начать все с нуля

    Это довольно радикальный способ лечения проблемы — сродни использованию гильотины в качестве средства от головной боли. При использовании этого способа у вас в базе данных остается только номенклатура товаров с ценами и остатками и список клиентов, а все остальные данные пропадают. Прежде чем воспользоваться им, пожалуйста, сделайте резервную копию базы данных, как это написано в этой статье, после чего:

    • Воспользуйтесь пунктом меню Сервис|ВыгрузкаНоменклатурыТоваров, сохранив список ваших товаров на жесткий диск
    • Воспользуйтесь пунктом меню Сервис|ВыгрузкаПокупателей, сохранив список ваших клиентов на жесткий диск
    • Закройте программу Тирика-Магазин
    • Замените базу данных на чистую, как это описано в первой главе статьи
    • Воспользуйтесь пунктом меню Сервис|ЗагрузкаНоменклатурыТоваров, загрузив список ваших товаров с жесткого диска
    • Воспользуйтесь пунктом меню Сервис|ЗагрузкаПокупателей, загрузив список ваших клиентов с жесткого диска

    Обращаем ваше внимание на то, что при использовании этого способа вы потеряете все ваши данные кроме номенклатуры товаров и списка клиентов.

    Источник

    Оцените статью
    ( Пока оценок нет )
    Поделиться с друзьями
    Uchenik.top - научные работы и подготовка
    0 0 голоса
    Article Rating
    Подписаться
    Уведомить о
    guest
    0 Комментарий
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии