Svn cleanup: sqlite: образ диска базы данных искажен

Я пытался сделать svn cleanup, потому что я не могу зафиксировать изменения в моей рабочей копии, и я получил следующую ошибку:

sqllite: образ диска базы данных неверен

Cleanup failed to process the following paths

Что я могу сделать прямо сейчас?

Ответ 1

У меня была та же проблема. Следующее сообщение в блоге помогло мне решить эту проблему: http://www.polak.ro/svn-e200030-sqlite-database-disk-image-is-malformed.html

Выполняется проверка целостности базы данных sqlite, которая отслеживает репозиторий (/.svn/wc.db):

sqlite3 .svn/wc.db "pragma integrity_check"

Это должно сообщить о некоторых ошибках.

Затем вы можете очистить их, выполнив следующие действия:

sqlite3 .svn/wc.db "reindex nodes"
sqlite3 .svn/wc.db "reindex pristine"

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

Ответ 2

Очистка SVN не работает. Папка SVN на моей локальной системе повреждена. Поэтому я просто удалил папку, воссоздал новую и обновил из SVN. Это решило проблему!

Ответ 3

Проверка целостности

sqlite3 .svn/wc.db "pragma integrity_check"

Очистка

sqlite3 .svn/wc.db "reindex nodes"
sqlite3 .svn/wc.db "reindex pristine"

В качестве альтернативы

Возможно, вы сможете сбросить содержимое базы данных, которая может быть прочитана в файл резервной копии, а затем вернуть ее обратно в новый файл базы данных:

sqlite3 .svn/wc.db

sqlite> .mode insert
sqlite> .output dump_all.sql
sqlite> .dump
sqlite> .exit

mv .svn/wc.db .svn/wc-corrupt.db
sqlite3 .svn/wc.db

sqlite> .read dump_all.sql
sqlite> .exit

Ответ 4

Я скопировал папку .svn из моего рабочего каталога однорангового узла и исправил проблему.

Ответ 5

После отключения электроэнергии я столкнулся с ошибкой в ​​образе диска базы данных, и предлагаемая команда узлов реиндекса не устранила все проблемы из-за нарушенных ограничений. Также процедура, описанная в http://mail-archives.apache.org/mod_mbox/subversion-users/201111.mbox/%[email protected]%3E, не решила проблему.

Решение в моем случае:

  • Оформить репозиторий svn снова во временную папку
  • Скопируйте, т.е. замените файл ".svn/wc.db" из новой проверки на поврежденную.

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

Ответ 6

Возможно, может быть решение:

  • щелчок правой кнопкой мыши по проекту
  • команда → отключить
  • Выбрать: Также удалить...

Теперь снова подключитесь снова:

  • щелчок правой кнопкой мыши по проекту
  • команда → Поделиться проектом
  • выберите repositorie: mine SVN (в другом случае: git и т.д.)
  • выберите папку repositorie

Примечание:

В моем случае я сделал резервную копию своих файлов. (безопасный ур назад: P)

Изменить:

Я говорю о плагине SVN на Eclipse:)

Ответ 7

Вы видели этот пост на сайте subversion? Вы также можете попытаться проверить и "исправить" базу данных напрямую, как описано здесь. (Заметьте, что я не эксперт, я просто сделал быстрый поиск в Google. Возможно, не связан с вашими проблемами).

Лично я попробую снова проверить репо и повторно применить ваши изменения. Не уверен, что это возможно, хотя в вашем случае?

Ответ 8

В ходе моих исследований я нашел 2 жизнеспособных решения.

  • Если вы используете какие-либо соединения, ssh, samba, монтируете, отсоединяете/размонтируете и снова подключаете/монтируете. Повторите попытку, это часто решает проблему для меня. После этого вы можете сделать svn cleanup или просто продолжать нормально работать (в зависимости от того, когда возникла проблема). Перезагрузка моего компьютера также устранила проблему один раз... да, это немой я знаю!

  • Несколько раз все, что вам нужно сделать, это rm -rf ваши файлы (или если вы не знакомы с термином, просто удалите свою папку svn) и еще раз перепроверьте свой репозиторий svn. Обратите внимание, что это не всегда решает проблему, и у вас также могут быть изменения, которые вы не хотите потерять. Именно поэтому я использую его как второй вариант.

Надеюсь, это поможет вам, ребята!

Ответ 9

Я решил проблему с повреждением rep-cache.db визуального svn-сервера.

Это два решения.

Остановить службу Visual SVN Server.

Загрузите оболочку sqllite3.exe с сайта sqlite и скопируйте ее в папку repo db.

Введите в командной строке в папке repo db следующие команды.

- Первое решение -

sqlite3 rep-cache.db

.clone rep-cache-new.db

нажмите ctrl + c, чтобы выйти из sqllite.

ren rep-cache.db rep-cache-old.db

ren re-cache-new.db rep-cache.db

- 2-е решение -

Удалить Rep-cache.db

del rep-cache.db

он будет автоматически создан.

Ответ 10

Если вы установите Tortoise SVN, перейдите в диспетчер задач и остановите его. Затем попробуйте удалить папку. он будет работать

Ответ 11

не нужно беспокоиться о парнях, блокирующих каталоги.

Просто вам нужно сделать, Если sqllite3 не установлен, введите команду ниже,

>sudo apt-get install sqlite3

Откройте базу данных SVN, введя эту команду,

>sqlite3 .svn/wc.db 

Теперь вам нужно только удалить записи блокировок из SVN DB.

sqlite>  select * from wc_lock;
1|-1           
sqlite>  delete from wc_lock;
sqlite>  select * from wc_lock;
sqlite>  .q

Выполнен процесс. Вы можете работать в вашем репозитории SVN, выполнять, обновлять, добавлять, удалять операции без проблем.

: -)

Ответ 12

  • проверить это svn в другом месте
  • показать скрытый файл .svn
  • заменить файл wc

это работает для меня!

Ответ 13

Во время разработки приложения я обнаружил, что сообщения поступают из частых и массивных операций INSERT и UPDATE. Убедитесь, что INSERT и UPDATE несколько строк или данных за одну операцию.

var updateStatementString : String! = ""

for item in cardids {

let newstring = "UPDATE "+TABLE_NAME+" SET pendingImages = '\(pendingImage)\' WHERE cardId = '\(item)\';"
            updateStatementString.append(newstring)

        }


        print(updateStatementString)
        let results = dbManager.sharedInstance.update(updateStatementString: updateStatementString)

        return Int64(results)

Ответ 14

cd в папку, содержащую .svn

rm -rf .svn
svn co http://mon.svn/mondepot/ . --force