830 документов
← К списку

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

страница

20.11.2015

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

Проблема

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

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.

  • В этой же директории выполните команду:

    sqlite3 1Cv8.lgd < backup.sql

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

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

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