Upgrade Python's sqlite3 on Debian Upgrade Python's sqlite3 on Debian sqlite sqlite

Upgrade Python's sqlite3 on Debian


You are right in thinking that the version of sqlite3 causes the problem. sqlite_malloc64 was introduced with release 3.8.7.

Instead of trying to upgrade the Python sqlite3 module which may end up breaking your Python installation, I would suggest compiling the version of spellfix.c included with version 3.8.2.

You can find the source here: https://www.sqlite.org/src/tarball/27392118/SQLite-27392118.tar.gz

From there you can build the amalgamation with:

sh configuremake sqlite3.c

You will have sqlite3.h and sqlite3ext.h in the tsrc folder. Then compile the spellfix.c extension with:

gcc -g -fPIC -shared spellfix.c -I ../../tsrc -o spellfix.dll

And you should get a compatible spellfix.dll that runs with your version of sqlite3.


Here is a manual solution (NOT RECOMMENDED, but as I didn't find backports for libsqlite3 v3.23.1 for my Linux install, I tried this, and it worked):

  1. Download from https://packages.debian.org/search?keywords=libsqlite3-0 a newer version. Here is a direct link:

    wget http://ftp.de.debian.org/debian/pool/main/s/sqlite3/libsqlite3-0_3.23.1-1_amd64.deb
  2. Decompress the .deb in a temporary folder:

    mkdir tmpdpkg -x libsqlite3-0_3.23.1-1_amd64.deb tmp

    or

    mkdir tmp; cd tmp; ar x ../libsqlite3-0_3.23.1-1_amd64.deb; tar xvfJ data.tar.xz; cd ..

    then

    # keep the old one in case it wouldn't work!mv /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6 /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6.old   # copy the new one in the right placecp tmp/usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6 /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6
  3. It should work:

    python -c "import sqlite3; print sqlite3.sqlite_version"   # 3.23.1

Disclaimer: this is a bit hack-ish, but it works.