Sqlite3, OperationalError: невозможно открыть файл базы данных - PullRequest
48 голосов
/ 09 января 2011

Вопрос: Почему я не могу открыть базу данных?


Информация: я работаю над проектом, цель которого не важна, но использую базу данных sqlite3.Я сделал тестовую программу, которая запускается и передает в нее место для создания базы данных:

/tmp/cer/could.db

, и программа модульного теста не может сделать db без проблем.Затем я на самом деле использую программу, передавая ей то же местоположение, и она говорит:

OperationalError: невозможно открыть файл базы данных

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

Какие-нибудь подсказки относительно того, что происходит на земле?

Ответы [ 12 ]

0 голосов
/ 16 апреля 2018

В моем случае решением было использовать абсолютный путь, чтобы найти существующий файл:

import os.path
filepath = os.path.abspath(filepath)
# Leave this out if the file doesn't exist yet
assert os.path.exists(filepath), "The file doesn't exist"
conn = sqlite3.connect(filepath)

Я не знаю, почему это исправление работает: путь содержал только символы ASCII и без пробелов. Тем не менее, это имело значение.

Для справки: Windows 7, Python 3.6.5 (64-разрядная версия).

Мне не удалось воспроизвести проблему на другом компьютере (также Windows 7, Python 3.6.4 64-bit), поэтому я понятия не имею, почему это исправление работает.

0 голосов
/ 29 марта 2018

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

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