解决Django迁移sqlite数据库报错db.utils.NotSupportedError: deterministic=True requires SQLite 3.8.3 or higher

报错日志

在执行python3 manage.py makemigrations时报错:(django4)

  File "/usr/local/python3/lib/python3.12/site-packages/django/db/backends/base/base.py", line 288, in ensure_connection
    with self.wrap_database_errors:
  File "/usr/local/python3/lib/python3.12/site-packages/django/db/utils.py", line 91, in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "/usr/local/python3/lib/python3.12/site-packages/django/db/backends/base/base.py", line 289, in ensure_connection
    self.connect()
  File "/usr/local/python3/lib/python3.12/site-packages/django/utils/asyncio.py", line 26, in inner
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/python3/lib/python3.12/site-packages/django/db/backends/base/base.py", line 270, in connect
    self.connection = self.get_new_connection(conn_params)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/python3/lib/python3.12/site-packages/django/utils/asyncio.py", line 26, in inner
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/python3/lib/python3.12/site-packages/django/db/backends/sqlite3/base.py", line 181, in get_new_connection
    register_functions(conn)
  File "/usr/local/python3/lib/python3.12/site-packages/django/db/backends/sqlite3/_functions.py", line 45, in register
    create_deterministic_function("django_date_extract", 2, _sqlite_datetime_extract)
django.db.utils.NotSupportedError: deterministic=True requires SQLite 3.8.3 or higher

解决办法:

  • 安装
    pip3 install pysqlite3
    pip3 install pysqlite3-binary

  • 替换使用的包
    修改引包文件,本例位于 /usr/local/pythonEnvs/django/lib/python3.9/site-packages/django/db/backends/sqlite3/base.py,注意查看自己python的路径
    vim /usr/local/pythonEnvs/django/lib/python3.9/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  #新加这段代码

后续迁移就会成功!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lytcreate.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值