LINUX.ORG.RU

сбой при поднятии бэкапа sqlite3

 , ,


0

1

бобра всем

сделал бэкап базы через

sqlite3  '/home/maestro/.Skype/msvcontact/main.db'  '.dump' >  '/home/maestro/.Skype/msvcontact/main.db.sql'

(база была повреждена в одной таблице)

поднимаю:

sqlite3 -init '/home/maestro/.Skype/msvcontact/main.db.sql'  '/home/maestro/.Skype/msvcontact/main.db'

sqlite чтото пытается делать, создает файл нулевого размера и прекращает работу, оставаясь в сеансе (ожидает команд)

открываю данный файл через sqlitestudio

делаю загрузку sql-файла дампа

получаю - cannot start a transaction within a transaction

кто виноват и что делать?

Ответ на: комментарий от MinasFilm

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

looper
()
Ответ на: комментарий от looper

загрузить почти 40 мб текстовик в sql-редактор? это какой же такое выдержит? sqlitestudio висит уже минту 20 наверное...

MinasFilm
() автор топика
Ответ на: комментарий от MinasFilm

Все загружать не надо, для начала надо прогнать команды CREATE TABLE, VIEW, TRIGGER, и т.д. короче все кроме INSERT. Если это прокатит, значит проблема с вставкой данных.

looper
()
Ответ на: комментарий от looper

короче надо ручками править sql-дамп?

м.б. можно задать опцию логгирования ошибок для

sqlite3  '/home/maestro/.Skype/msvcontact/main.db'  '.dump' >  '/home/maestro/.Skype/msvcontact/main.db.sql'
?

MinasFilm
() автор топика
Ответ на: комментарий от MinasFilm

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

looper
()
Ответ на: комментарий от looper

вот если бы ты еще сказал, что за опция) я просто сабж второй день как поставил, а сам сиквелил последний раз года два назад уже наверное минимум

MinasFilm
() автор топика
Ответ на: комментарий от MinasFilm

Я сам не знаю, если честно :). Но если база навернулась, то опции вряд ли помогут. Поэтому если есть бэкап, тем более в текстовом виде, то работать проще уже с ним.

looper
()
Ответ на: комментарий от looper

база была выгружена в бекап через консольный клиент на этой же машине)

а опцию я имею ввиду ту, что при загрузке дампа через консоль велит сиквелю логгировать ошибки в процессе)

MinasFilm
() автор топика
Ответ на: комментарий от MinasFilm
$ man sqlite3
...
-echo  Print commands before execution.
...
-bail  Stop after hitting an error.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.