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 或更高版本

posted @ 2024-10-21 18:05  林汉州win  阅读(5)  评论(0编辑  收藏  举报