Имя: Пароль:
1C
1С v8
Восстановить базу SQLite (журнал регистрации)
0 Lama12
 
12.10.15
13:54
Столкнулись с неприятной "фичей" новой платформы.
При попытке выгрузить журнал регистрации, он в исходном месте так раздулся, что сожрал все место на диске. Естественно работать с базой стало не возможно.
Что сделали.
Перенесли папку с журналом в новое место.
Запустили базу снова.
Начал писать ся новый журнал.
При попытке прочитать старый журнал выдается сообщение:

Ошибка формата файла журнала регистрации
по причине:
sqlite3_exec failed: database disk image is malformed
db: D:\Log_devdeb\reg_2041\da905966-250b-4dfc-97df-da05638e3fab\1Cv8Log\1Cv8.lgd
sql: PRAGMA journal_mode = OFF

Как с этим можно побороться? Ведь все что нажито непосильным трудом... за последние 9 месяцев... так и не родилось... :)
1 Лефмихалыч
 
12.10.15
14:01
подозреваю, что мистец котенку

гуглить "database disk image is malformed " пробовал?
2 Lama12
 
12.10.15
14:03
(1) Пробовал. Есть предложение сделать какой-то дамп. Но все делается под линуксами. Написано что командная строка sqlite 3 нормально под виндой не работает. Свой специалист по линуксам в отпуске. Так что ищу альтернативные варианты.
3 Лефмихалыч
 
12.10.15
14:06
(2) ты попробовал что-то и оно не получилось или ни чего не пробовал?
4 Живой Ископаемый
 
12.10.15
14:09
"Что сделали.
Перенесли папку с журналом в новое место. "
Надо было использовать из СП:

СкопироватьЖурналРегистрации
ОчиститьЖурналРегистрации
5 Lama12
 
12.10.15
14:15
(3) Еще не пробовал. Вот эта статья - http://itsphera.ru/1c/vosstanovlenie-fajla-baz-dannyx-sqlite.html
(4) Все ходы записаны. Сейчас попробую на копии.
6 Lama12
 
12.10.15
14:44
(4) Yt получается. Тоже сообщение.
А вот дамп, вроде делается. Долго... О результатах сообщу. Вдруг кому будет полезно.
7 Lama12
 
13.10.15
09:10
Все получилось. Лог востановился и работает.

Порядок решения проблемы.
Работа ведется в командной строке.
Установить текущей папкой ту, в которой расположена база данных. Туда же поместить sqlite3 command line.
Выполнить команду sqlite3 main.db .dump>>myDumpSQLite.sql
Где main.db - файл поврежденного лога.
В результате в текущей папке получится файл myDumpSQLite.sql.
В принципе, можно его посмотреть. Это текстовый файл.
После получения файла выполнить команду sqlite3 main-recovered.db <myDumpSQLite.sql
В результате получаем файл main-recovered.db - это и есть восстановленный лог. Переименовываем его для удобства 1С и все. В принципе можно и так читать любым просмоторщиком sqlite.