«OperationalError: база данных заблокирована» при развертывании сайта в Azure - PullRequest
1 голос
/ 14 июня 2019

Я создал сайт django, и часть его - ссылка для аутентификации Microsoft. Когда я загружаю сайт в Azure Cloud и нажимаю на ссылку «Войти», я получаю следующую ошибку:

OperationalError at /login
database is locked
Request Method: GET
Request URL:    http://bhkshield.azurewebsites.net/login
Django Version: 2.2.2
Exception Type: OperationalError
Exception Value:    
database is locked
Exception Location: /home/site/wwwroot/antenv3.6/lib/python3.6/site-packages/django/db/backends/base/base.py in _commit, line 240
Python Executable:  /usr/local/bin/python
Python Version: 3.6.7
Python Path:    
['/usr/local/bin',
 '/home/site/wwwroot',
 '/home/site/wwwroot/antenv3.6/lib/python3.6/site-packages',
 '/usr/local/lib/python36.zip',
 '/usr/local/lib/python3.6',
 '/usr/local/lib/python3.6/lib-dynload',
 '/usr/local/lib/python3.6/site-packages']
Server time:    Fri, 14 Jun 2019 13:19:22 +0000



Я использую sqlite3 (часть кода setting.py):

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}


Я не понимаю, почему я получаю эту ошибку, потому что я ничего не вставляю и не фиксирую в базе данных.
Мой сайт состоит только из одной страницы, на которой есть ссылка для входа (4 просмотра: home, contex intialize, login и callback). Вот и все.

Просто чтобы упомянуть, когда я запускаю сайт локально, все работает. Он перестает работать только после развертывания.
Еще одна странность в том, что я загрузил что-то подобное на другой сайт на Azure, и логин сработал. По некоторым причинам, это не работает сейчас, и я понятия не имею, почему ...
Кто-нибудь сталкивался с таким типом ошибки и может помочь?

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

1 Ответ

0 голосов
/ 14 июня 2019

Это похоже на дублирование этого вопроса: OperationalError: база данных заблокирована .

Из документации Джанго: https://docs.djangoproject.com/en/dev/ref/databases/#database-is-locked-errorsoption

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

Оболочка SQLite Python имеет значение времени ожидания по умолчанию, которое определяет как долго второй поток может ожидать блокировки до время ожидания и вызывает ошибку OperationalError: ошибка блокировки базы данных.

Если вы получаете эту ошибку, вы можете устранить ее:

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

Переписать ваш код, чтобы уменьшить параллелизм и обеспечить базу данных сделки недолговечны.

Увеличить значение времени ожидания по умолчанию, установив базу данных времени ожидания Опция

Я также разрабатывал веб-приложение Django и выбрал SQL Server Azure в качестве базы данных приложения. Все работает хорошо.

...