将站点部署到Azure时出现“ OperationalError:数据库已锁定”

时间:2019-06-14 13:55:05

标签: python django sqlite azure-web-sites

我建立了一个django网站,其中一部分是Microsoft身份验证链接。 当我将网站上传到蔚蓝云并单击“登录”链接时,收到以下错误:

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个视图:主页,contex初始化,登录和回调)。而已。

只需提一下,当我在本地运行站点时,一切正常。它仅在部署后停止工作。
另一个奇怪的事情是,我之前曾将这样的内容上传到azure上的另一个网站,并且登录正常。由于某种原因,它现在不起作用,我也不知道为什么...
有没有人遇到这种类型的错误并且可以提供帮助?

如果您需要我提供更多文件的内容,请告诉我,我会的。

1 个答案:

答案 0 :(得分:0)

似乎是这个问题的重复:OperationalError: database is locked

从Django文档中: https://docs.djangoproject.com/en/dev/ref/databases/#database-is-locked-errorsoption

  

SQLite旨在成为轻量级数据库,因此不支持   高并发性。 OperationalError:数据库被锁定错误   指示您的应用程序比   sqlite可以处理默认配置。此错误表示   线程或进程对数据库连接具有排他锁,并且   另一个线程超时,等待释放锁。

     

Python的SQLite包装器具有默认的超时值,该值确定   第二个线程被允许在锁上等待多长时间   超时并引发OperationalError:数据库被锁定错误。

     

如果遇到此错误,可以通过以下方法解决:

     

切换到另一个数据库后端。在某个时候SQLite   变得对于实际应用程序太“精简”,而这些种类的   并发错误表明您已经达到目标。

     

重写代码以减少并发性并确保数据库   交易是短暂的。

     

通过设置超时数据库来增加默认超时值   选项

我也一直在开发Django Web应用程序,我选择了Azure SQL Server作为应用程序的数据库。一切正常。