In a virtual Env with Python 3.7.2, I am trying to run django's python manage.py startap myapp
and I get this error:
raise ImproperlyConfigured('SQLite 3.8.3 or later is required (found %s).' % Database.sqlite_version)
django.core.exceptions.ImproperlyConfigured: SQLite 3.8.3 or later is required (found 3.8.2).
I'm running Ubuntu Trusty 14.04 Server.
How do I upgrade or update my sqlite version to >=3.8.3?
I ran
$ apt list --installed | grep sqlite
libaprutil1-dbd-sqlite3/trusty,now 1.5.3-1 amd64 [installed,automatic]
libdbd-sqlite3/trusty,now 0.9.0-2ubuntu2 amd64 [installed]
libsqlite3-0/trusty-updates,trusty-security,now 3.8.2-1ubuntu2.2 amd64 [installed]
libsqlite3-dev/trusty-updates,trusty-security,now 3.8.2-1ubuntu2.2 amd64 [installed]
python-pysqlite2/trusty,now 2.6.3-3 amd64 [installed]
python-pysqlite2-dbg/trusty,now 2.6.3-3 amd64 [installed]
sqlite3/trusty-updates,trusty-security,now 3.8.2-1ubuntu2.2 amd64 [installed]
and
sudo apt install --only-upgrade libsqlite3-0
Reading package lists... Done
Building dependency tree
Reading state information... Done
libsqlite3-0 is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 14 not upgraded.
EDIT:
the settings.py
is stock standard:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
If you don't want to recompile Python and you're using a virtualenv you can do this to set it up without affecting the system as a whole (I've done this with Ubuntu 16/18):
Download SQLite tarball from https://www.sqlite.org/download.html
Extract the contents and cd into the folder.
Run the following commands:
./configure
sudo make install
Now edit the activate
script used to start your virtualenv so Python looks in the right place for the newly installed SQLite. Add the following line to the top of /path/to/virtualenv/bin/activate
:
export LD_LIBRARY_PATH="/usr/local/lib"
Now, when active, Django 2.2+ should work fine in the virtualenv. Hope that helps.
This error comes because your virtual environment could not connect to newly updated sqlite3 database. For that you have to update your sqlite3 database version manually and then give path of it to your virtual environment. Kindly follow below steps:
Download latest sqlite3 from official site. (https://www.sqlite.org/download.html)wget http://www.sqlite.org/sqlite-autoconf-3070603.tar.gz
Then go to that folder and fire command.
tar xvfz sqlite-autoconf-3070603.tar.gz
Go to respective folder. cd sqlite-autoconf-3070603
./configure
make
make install
It may take too time but wait till end. If it's take too much then terminate that process and continue rest of steps.
Now you successfully install updated sqlite3. Now fire this command sudo LD_RUN_PATH=/usr/local/lib ./configure --enable-optimizations
Open your activate file of virtual environment (e.g., venv/bin/activate) and add this line top of the file...
export LD_LIBRARY_PATH="/usr/local/lib"
Now for checking you can type this commands to your python shell
$ python
Python 3.7.3 (default, Apr 12 2019, 16:23:13)
>>> import sqlite3
>>> sqlite3.sqlite_version
'3.27.2'
I've just been through this. I had to install a separate newer version of SQLite, from
https://www.sqlite.org/download.html
That is in /usr/local/bin. Then I had to recompile Python, telling it to look there:
sudo LD_RUN_PATH=/usr/local/lib ./configure --enable-optimizations
sudo LD_RUN_PATH=/usr/local/lib make altinstall
To check which version of SQLite Python is using:
$ python
Python 3.7.3 (default, Apr 12 2019, 16:23:13)
>>> import sqlite3
>>> sqlite3.sqlite_version
'3.27.2'
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With