默认centos7的版本是3.7, 而django版本自2.x开始后就要求升级sqlite3为3.8+或者3.9+, 此时有几种解决办法。
1. 降级django
2. 升级sqlite3
通常为了适应django的后期版本升级, 会升级sqlite3, 升级过程如下:
$ wget https://www.sqlite.org/2019/sqlite-autoconf-3270200.tar.gz
$ tar -zxvf sqlite-autoconf-3270200.tar.gz
$ cd sqlite-autoconf-3270200
$ ./configure --prefix=/usr/local
$ make && make install
$ mv /usr/bin/sqlite3 /usr/bin/sqlite3_7
$ ln -s /usr/local/bin/sqlite3 /usr/bin/sqlite3
$ vim ~/.bashrc
# 加入以下内容
export LD_LIBRARY_PATH="/usr/local/lib":LD_LIBRARY_PATH
$ source ~/.bashrc
之后可以进入python的shell命令中使用如下代码查看版本
import sqlite3
print(sqlite3.sqlite_version)
正常的话应该为`3.27.2`
使用supervisor或其他依赖环境变量部署时请注意:
升级教程后最重要的部分是配置sqlite3的LD_LIBRARY_PATH, 配置好之后可以从cmd中获取sqlite3的版本缺失为高版本的, 而在cmd中启动django也可以正常运行, 但是利用supervisor进行部署的时候, 会发现报错sqlite3版本好像又回到了旧版本。
此时解决办法很简单, 在supervisor的配置文件中的environment中加入LD_LIBRARY_PATH即可, 默认/etc/profile和/etc/environment中的变量不会被加入到linux的环境变量中, 所以此时需要再supervisor中显示指定