Файл базы данных SQLite3 - поврежден / зашифрован только в Linux - PullRequest
0 голосов
/ 22 сентября 2011

В настоящее время я пишу сценарий Python для взаимодействия с базой данных SQLite, но он все время возвращал, что база данных была «зашифрована или повреждена». База данных определенно не зашифрована, поэтому я попытался открыть ее, используя библиотеку sqlite3 в командной строке (возвратила ту же ошибку) и с помощью надстройки SQLite Manager для Firefox ...

У меня была копия той же структуры базы данных, но заполненная другим экземпляром этой программы в окне Windows, я попытался открыть ее с помощью SQLite Manager, и это было нормально, поэтому в качестве быстрого теста я загрузил «Зашифрованный или Поврежденная »база данных на USB-накопитель и подключена к машине с Windows, используя менеджер, который она открыла первый раз без проблем.

Кто-нибудь знает, что может быть причиной этого?

EDIT:

На Linux-машине я безуспешно пытался получить доступ к нему как root, я также попытался изменить его до 777 в качестве теста (на скопированной версии БД), опять же без удачи

Ответы [ 2 ]

2 голосов
/ 22 сентября 2011

Имеет ли ваш Linux-бокс ту же версию SQLite, что и ваш Windows-бокс? Старая версия SQLite может не распознавать файлы, использующие новые функции. Например, Режим журнала WAL .

Чтобы не допустить попытки старых версий SQLite восстановить WAL-режим база данных (и что еще хуже) версия формата файла базы данных числа (байты 18 и 19 в заголовке базы данных) увеличены с 1 до 2 в режиме WAL. Таким образом, если более старая версия SQLite пытается подключиться к базе данных SQLite, которая работает в режиме WAL, это сообщить об ошибке в соответствии с "файл зашифрован или не является база данных».

0 голосов
/ 22 сентября 2011

Вы должны проверить привилегии пользователя, пользователю на linux может не хватить привилегий.

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