Opened 2 years ago

Closed 2 years ago

Last modified 22 months ago

#30313 closed Bug (wontfix)

SQLite min version in Django 2.2 breaks Centos 7 compatibility

Reported by: Jamie Cockburn Owned by: nobody
Component: Database layer (models, ORM) Version: 2.2
Severity: Normal Keywords: SQLite Centos
Cc: Triage Stage: Unreviewed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

The latest Django 2.2 release requires SQLite 3.8.3.

Centos 7 repos bundle SQLite 3.7.17, so this change breaks compatibility with one of the major linux distros.

Change History (6)

comment:1 Changed 2 years ago by Carlton Gibson

Resolution: wontfix
Status: newclosed

OK, that's unfortunate, but I don't think there's anything we can do. As per discussion on #30055, this was required to make other improvements possible.

SQLite v3.8.3 was released in Feb 2014. Current version is v3.27.2.

Unless you can ask Centos to upgrade — I don't know if they'll do that — I guess you'll need to compile an updated versions yourself.
(There's good stuff in there.)

Sorry for the inconvenience.

comment:2 Changed 2 years ago by Jamie Cockburn

I haven't checked, but this most likely breaks support for SQLite in Redhat too?

Is there not a way to gracefully degrade?

Losing support for SQLite on these major and widely deployed server operating systems seems wrong.

comment:3 Changed 2 years ago by Jamie Cockburn

Summary: SQLite min version in Django 2.2 breaks Centos 7 compatabilitySQLite min version in Django 2.2 breaks Centos 7 compatibility

comment:4 Changed 2 years ago by Wolph

It's not just Centos. It's breaking a few of my Travis builds too:

Probably more, but these are the first that get run monthly and suddenly broke down because of this change.

At the very least the commit message is wrong though: https://github.com/django/django/commit/36300ef336e3f130a0dadc1143163ff3d23dc843
"Fixed a failure when running tests on systems with SQLite < 3.8.3."

It doesn't fix any failure, it creates a failure by adding a requirement.

comment:5 in reply to:  4 Changed 2 years ago by Mariusz Felisiak

You can simply fix this by pointing xenial as a distribution for TravisCI (e.g. using xenial).

comment:6 Changed 22 months ago by terminator14

When CentOS 8 is ready, hopefully it will use an sqlite library that's at least version 3.8.3, but until then, if you need to update your system's sqlite library on CentOS 7 minimal x86_64, do this as root:

yum groupinstall "Development Tools"
yum install tcl
curl -O https://www.sqlite.org/src/tarball/sqlite.tar.gz
tar -xvf sqlite.tar.gz
cd sqlite/
./configure
make
cp -v .libs/libsqlite3.so.0.8.6 /usr/local/lib64/
    # Dont miss the dot in .libs above
echo "/usr/local/lib64" > /etc/ld.so.conf.d/sqlite-x68_64.conf
ldconfig

We basically just compiled the sqlite library from source, moved it to /usr/local/lib64/, and told the system to use it instead of the original /usr/lib64/libsqlite3.so.0.8.6 library it was using. This effects virtual environments as well.

At this point, if you want, you can delete the sqlite.tar.gz file, and sqlite directory with all the source code.
If you ever need to undo this, delete /etc/ld.so.conf.d/sqlite-x68_64.conf, delete /usr/local/lib64/libsqlite3.so.0.8.6, and run "ldconfig" as root.

Last edited 22 months ago by terminator14 (previous) (diff)
Note: See TracTickets for help on using tickets.
Back to Top