迁移原同事写的程序,到新服务器上边。运行报错。解决方案有三种
- 降低django版本
- 升级sqlite3,不低于3.8.3版本
- 修改django源码
方案一、降低django版本
卸载高版本django
pip uninstall django
安装低版本,如
pip install django==2.1.7
注意:如果是生产环境或者项目规定了django版本,降低django版本显然不合适,最好的解决方案是升级sqlite3的版本
方案二、升级sqlite3版本
升级sqlite3版本的主要步骤有:
- 下载不低于3.8.3版本的sqlite3
- 解压并安装sqlite3
- 设置软链接
- 修改.bashrc文件
下载sqlite3
wget https://www.sqlite.org/2019/sqlite-autoconf-3270200.tar.gz
解压并安装sqlite3
$ 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_old
$ ln -s /usr/local/bin/sqlite3 /usr/bin/sqlite3
修改.bashrc文件
在用户目录下.bashrc文件最后一行添加export LD_LIBRARY_PATH="/usr/local/lib"
并在终端输入立即生效命令source ~/.bashrc
。
方案三、修改django源码
在django安装包里,找到/.../lib/python3.6/site-packages/django/db/backends/sqlite3/base.py
脚本,找到判断sqlite版本的代码,注释掉并更改如下:
def check_sqlite_version():
# if Database.sqlite_version_info < (3, 8, 3):
if Database.sqlite_version_info < (3, 6, 3):
raise ImproperlyConfigured('SQLite 3.6.3 or later is required(found %s).' % Database.sqlite_version)
方案三修改了django源码,存在未知风险,不建议使用。