chan

朝生暮死不足笑 但悲百年不足道

【Django+SQLite】关于django.db.utils.NotSupportedError: deterministic=True requires SQLite 3.8.3 or higher的错误解决


使用Django自带的SQLite数据库时,提示需要更高版本。

查看当前虚拟环境中自带的SQLite版本

再看下linux系统自带的【PS:已经被我更新到最新版】SQLite版本

3.47,这是当前此文发布时的最新版本

——————————————————————————–

翻遍了以往的教程,最后的解决办法如下

以我为例,我是使用的虚拟环境,故而我找到虚拟环境下的目录,目录地址如下

/envs/lib/python3.9/site-packages/django/db/backends/sqlite3

打开base.py文件

#from sqlite3 import dbapi2 as Database  #注释它
from pysqlite3 import dbapi2 as Database #新加这段代码

修改后点击保存

终于解决。

——————————————————————————–

此处贴出给我解决此问题的帖子

https://blog.csdn.net/qq_44501429/article/details/131147638

—————————————————————————–

吐槽;这个问题,前后折腾我约2个小时,主要是前人给的解决办法,已经不再有用。

最近,很多朋友都把自己的操作系统、Python、Django都升级到最新版本了,使用默认SQLite数据,运行时会报出类似django.db.utils.NotSupportedError: deterministic=True requires SQLite 3.8.3的错误提示。这主要是操作系统默认SQLite数据库版本太低造成的。这里给大家提供三种解决办法,希望能帮到大家。

第一种:

升级系统里的SQLite版本。方法:https://www.django.cn/forum/forum-487.html

注意,如需要最新版本的话,请从官网下载最新的软件包。 下载址:https://www.sqlite.org/download.html

第二种:找到报错文件,如/usr/local/python3/lib/python3.8/site-packages/django/db/backends/sqlite3/base.py 打开它,找到

def check_sqlite_version():
    if Database.sqlite_version_info < (3, 9, 0):
把里面小括号里的 SQLite版本(3,9,0)修改成你当前系统里版本就好。

第三种:

使用第三方包运行SQLite。把sqlite3 更换为pysqlite3 和 pysqlite3-binary方法:

1、安装pysqlite3和pysqlite3-binary
pip install pysqlite3
pip install pysqlite3-binary
2、打开文件/usr/local/python3/lib/python3.8/site-packages/django/db/backends/sqlite3/base.py,找到 from sqlite3 import dbapi2 as Database 注释它,添加代码

#from sqlite3 import dbapi2 as Database  #注释它
from pysqlite3 import dbapi2 as Database #新加这段代码
三种,总有一种适合你

比方说这三种,其中第二种是最简便的,但是此模块中已经没有与之一样的代码了。第三种倒是可以解决。另外,还有第四种解决办法,我想是将deterministic=True改为False,不过这会不会为项目带来隐藏的问题还未可知。

https://gitee.com/hejunwang/django32_celery

==========================================

就到这里吧,散会

评论
还没有评论
    发表评论 说点什么