报错日志
在执行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 #新加这段代码
后续迁移就会成功!