我将Django代码从2.1.7直接迁移到新的Django 2.2。我在Centos7开发环境中遇到的唯一问题是本地开发数据库(sqlite3)版本与Python 3.6.7不兼容。
我从“www.example.com runserver”得到的错误manage.py是:
django.core.exceptions.ImproperlyConfigured: SQLite 3.8.3 or later
我无法使用另一个版本的Python,因为这是AWS elasticbeanstalk支持的最大值。Python 3.6.7似乎附带了版本为:
>>> import sqlite3
>>> sqlite3.version
'2.6.0'
>>> sqlite3.sqlite_version
'3.7.17'
>>>
我在本地Centos7工作站上使用了一个单独的开发帐户,并发布了 pipenv shell 以开始代码开发和IDE。
我找到的唯一解决方法是手动下载SQLite3 autoconf版本3.27.2,并使用以下命令手动编译到该开发帐户主文件夹中:
wget https://www.sqlite.org/2019/sqlite-autoconf-3270200.tar.gz
gzip -d sqlite-autoconf-3270200.tar.gz
tar -xvf sqlite-autoconf-3270200.tar
cd sqlite-autoconf-3270200/
./configure --prefix=/home/devuser/opt/
make
make install
之后,我修改了我的.bashrc以反映以下内容:
export LD_LIBRARY_PATH="${HOME}/opt/lib"
当我重新登录我的devuser帐户时,这似乎起到了作用。我的应用程序似乎使用我的本地开发数据库正确运行。
Python 3.6.7 (default, Dec 5 2018, 15:02:05)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux
>>>import sqlite3
>>> sqlite3.version
'2.6.0'
>>> sqlite3.sqlite_version
'3.27.2'
我的本地开发数据库是SQLite,但我的settings.py在检测到SQLite3数据库后端在AWS上处于生产状态时,不会加载任何SQLite3数据库后端(在选中环境变量标记PRODUCTION时,使用Mysql生产数据库作为后端)。
我对问题的理解是否正确,我的方法和实施是否可接受?
我觉得重新编译python是一种巨大的时间浪费,老实说,建立一个本地mysql版本可能会更快,而不再浪费时间在sqlite上......但是复制或转储一个文件,迁移,和 loaddata 重新开始是如此的美好。
2条答案
按热度按时间j9per5c41#
我正在使用Centos7和python36。
这意味着python36使用/lib 64/libsqlite3.so.0。在python控制台中,它看起来如下所示
需要替换库,所以我们必须有一个新版本。有一种方法可以做到这一点。
再次转到python控制台
现在看起来好多了。让我们尝试创建Django项目并应用迁移
Sqlite3数据库创建成功!
aydmsdu92#
在美国,ABA routing transit number(阿坝RTN)是印在支票底部的九位数代码,用于标识开具支票的金融机构。美国银行家协会(ABA)于1910年开发了该系统,以便于对纸质支票进行分类、打包并将其交付给出票人(支票开具人)的银行,以便借记到出票人的帐户。
较新的电子付款方法继续依赖阿坝RTN来标识付款银行或其它金融机构。联邦储备银行使用ABA RTN处理Fedwire资金转帐。ACH网络还使用ABA RTN处理直接存款、帐单付款和其它自动转帐。