CentOS 7 安装 SQLite 3.8.3
我在 linux Centos7+python3.9.6+Django3.2.5 中遇到的问题。
#报错信息
File "/www/server/pyporject_evn/iwords_venv/lib/python3.8/site-packages/django/db/backends/sqlite3/base.py", line 217, in get_new_connection
create_deterministic_function('django_date_extract', 2, _sqlite_datetime_extract)
django.db.utils.NotSupportedError: deterministic=True requires SQLite 3.8.3 or higher
下载高版本sqlite
wget https://www.sqlite.org/2014/sqlite-autoconf-3080300.tar.gz
tar -xzvf sqlite-autoconf-3080300.tar.gz
cd sqlite-autoconf-3080300
./configure
make && make install
mv /usr/bin/sqlite3 /usr/bin/sqlite37# 不删除旧版 sqlite,将其重命名 sqlite37,如有需要可通过 sqlite37 进入
ln -s /usr/local/bin/sqlite3 /usr/bin/sqlite3
echo "/usr/local/lib" > /etc/ld.so.conf.d/sqlite3.conf
ldconfig
虽然 sqlite3已经更新到最新版本。但似乎没用。
后来发现应该设置一下 LD_LIBRARY_PATH
[root@localhost home]# export LD_LIBRARY_PATH="/usr/local/lib"# 设置动态链接搜索库
或者
echo 'export LD_LIBRARY_PATH="/usr/local/lib"' >> ~/.bashrc
source ~/.bashrc
一种解决方案是将数据库从 sqlite3 更改为 pysqlite3。激活虚拟环境后,安装 pysqlite
pip3 install pysqlite3
pip3 install pysqlite3-binary
并更改 base.py 中的 db
vim python3.9.6/site-packages/django/db/backends/sqlite3/base.py
from pysqlite3 import dbapi2 as Database # 更改from sqlite3 import dbapi2 as Database
重新启动 django 服务器就可以了。
参考资料:
Django - deterministic=True 在运行 python manage.py runserver 时需要 SQLite 3.8.3 或更高版本
本文作者:林汉州win
本文链接:https://www.cnblogs.com/win1998/p/18489984
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步