Подтвердить что ты не робот

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

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

Является ли это ошибкой или я что-то неправильно делаю? (Просто думал, является ли абсолютный путь к файлу указанным по-разному в Ubuntu?)

Вот начало моего файла settings.py:

# Django settings for OmniCloud project.

DEBUG = True
TEMPLATE_DEBUG = DEBUG

ADMINS = (
# ('Your Name', '[email protected]'),
)

MANAGERS = ADMINS

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
    'NAME': '~/Harold-Server/OmniCloud.db',                      # Or path to database file if using sqlite3.
    'USER': '',                      # Not used with sqlite3.
    'PASSWORD': '',                  # Not used with sqlite3.
    'HOST': '',                      # Set to empty string for localhost. Not used with sqlite3.
    'PORT': '',                      # Set to empty string for default. Not used with sqlite3.
}
}
4b9b3361

Ответ 1

Django NewbieMistakes

ПРОБЛЕМА Вы используете SQLite3, ваш DATABASE_NAME настроен на полный путь к файлу базы данных, файл базы данных можно записать в Apache, но вы все равно получаете вышеуказанную ошибку.

РЕШЕНИЕ Убедитесь, что Apache также может записывать в родительский каталог базы данных. SQLite должен иметь возможность писать в этот каталог.

Убедитесь, что каждая папка полного пути к файлу базы данных не запускается с номером, например. /www/ 4myweb/db (наблюдается в Windows 2000).

Если для параметра DATABASE_NAME установлено что-то вроде '/Users/yourname/Sites/mydjangoproject/db/db', убедитесь, что вы сначала создал каталог "db".

Убедитесь, что ваш каталог /tmp доступен для записи в мире (маловероятная причина как другая вещь на вашей системе также не будет работать). ls/tmp -ald следует производят drwxrwxrwt....

Убедитесь, что путь к базе данных, указанный в settings.py, является полным путь.

Также убедитесь, что файл присутствует там, где вы ожидаете.

Ответ 2

Я столкнулся с такой же проблемой. Вот моя настройка, которая сработала.

'ENGINE': 'django.db.backends.sqlite3', 
'NAME': '/home/path/to/your/db/data.sqlite3'

Другие настройки в случае sqlite3 будут одинаковыми/по умолчанию.
И вам нужно создать data.sqlite3.

Ответ 3

Вы не указали абсолютный путь - вы использовали ярлык ~, который может не работать в этом контексте. Вместо этого используйте /home/yourusername/Harold-Server/OmniCloud.db.

Ответ 4

Вам нужно использовать полный путь вместо ~/.

В вашем случае что-то вроде /home/harold/Harold-Server/OmniCloud.db.

Ответ 5

В моем случае файл sqlite db db.sqlite3 хранился в DocumentRoot apache. Таким образом, даже после установки следующих разрешений это не сработало:

sudo chown www-data:www-data /path/to/db-folder
sudo chown www-data:www-data /path/to/db-folder/sqlite-db.db

Наконец, когда я переместил db.sqlite3 во вновь созданную папку dbfolder под DocumentRoot и дал указанные выше разрешения, и он сработал.

Ответ 6

используйте этот тип, он работает для меня.  windows 7 с python 2.7 и django 1.5

'ENGINE': 'django.db.backends.sqlite3',
'NAME': 'C:\\tool\\mysite\\data.db',

надеюсь, что его работы...