ホーム >  Python > Django >  【Django3.x】久々に開発サーバー起動時にSQLite3のエラーが出た【SQLite3】

投稿日:   |  最終更新日:

【Django3.x】久々に開発サーバー起動時にSQLite3のエラーが出た【SQLite3】

DjangoPython

Djangoの簡易サーバーを起動したところ、Sqlite3のエラーが表示されたので対処します。

開発サーバー起動時エラーが発生

前回、ソースコードの配置まで完了しました。久々に「python3 manage.py runserver」で起動できるかどうか試してみたところ、以下のエラーようなエラーが発生しました。

【Vagrant】DRFアプリケーション作成、テスト起動【Django】

File "/usr/local/lib64/python3.7/site-packages/django/db/backends/sqlite3/base.py", line 69, in check_sqlite_version
    'SQLite 3.9.0 or later is required (found %s).' % Database.sqlite_version
django.core.exceptions.ImproperlyConfigured: SQLite 3.9.0 or later is required (found 3.7.17).

上記のエラーは省略していますが、実際はずらずら表示されます。スタックトレース(Stack Trace) というもので、プログラムの呼び出し順序が記録されてものです。pythonではこの表示に「traceback」という標準ライブラリが使用されるため、最初のほうに「Traceback (most recent call last):」と表示されています。必要なのは「最終的にどこでエラーが発生したか」「どういう内容か」だけなので一番下のこの2行以外見る必要ありません。

翻訳すると、「SQLite3.9.0以降が必要です。」という内容です。新しいバージョンのSQLlite3をインストールします。

作業の流れ

1.vagrantを起動して、Amazon Linux2にログインします。

2.Pythonパッケージをインストールします。

前回まで

今回の作業は、以下の続きです。

【仮想環境】MacにVirtualBoxをインストール【Mac】

【Vagrant】MacにAWS公式のAmazon Linux2 Vagrant 環境を作成【オンプレミス】

【Vagrant】MacにAWS公式のAmazon Linux2 Vagrant Boxを作成、起動【オンプレミス】

Vagrant】Macに用意したVagrantのAmazon Linux2 環境にVirtualBox Guest Additionsをインストール【オンプレミス】

【Vagrant】Macに用意したAmazon Linux2 環境にPythonをインストール【オンプレミス】

【Vagrant】Macに用意したAmazon Linux2 環境にuwsgi、Django、Django Restframeworkをインストール【オンプレミス】

【Vagrant】Macに用意したAmazon Linux2 環境にsqlite3、nginxをインストール【オンプレミス】

【Vagrant】Macに用意したAmazon Linux2 環境にDjangoプロジェクト作成【オンプレミス】

【Vagrant】DRFアプリケーション作成、テスト起動【Django】

※今回の記事は、既にAmazonLinux2のVagrant環境を作成済みであるとします。

環境

私のPC環境は以下の通りです。

PC MacBook Air (Retina, 13-inch, 2019)
CPU 1.6 GHz デュアルコアIntel Core i5
メモリ 16 GB 2133 MHz LPDDR3
OS 10.15.2
VirtualBox 6.1.12r139181
Vagrant 2.2.9

仮想環境

仮想環境は以下の通りです。

OS Amazon Linux release 2 (Karoo)
Python 3.7.9
Django 3.2
djangorestframework 3.12.4
djangorestframework-jwt 1.11.0
django-cleanup 5.2.0
uWSGI 2.0.19.1
Nginx 1.18.0


対処法

①まず、最新バージョンを「https://www.sqlite.org/download.html」で確認します。

SQLite Download Page

②以下のコマンドを実行します。

wget https://www.sqlite.org/2020/sqlite-autoconf-3360000.tar.gz

# 新しいバージョンのファイル名を指定してください

# 例) SQLite 3.36.0の場合

ダウンロードが開始されます。

--2021-09-23 17:05:54--  https://www.sqlite.org/2021/sqlite-autoconf-3360000.tar.gz
www.sqlite.org (www.sqlite.org) をDNSに問いあわせています... 45.33.6.223, 2600:3c00::f03c:91ff:fe96:b959
www.sqlite.org (www.sqlite.org)|45.33.6.223|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 2977080 (2.8M) [application/x-gzip]
`sqlite-autoconf-3360000.tar.gz' に保存中

100%[=======================================================================>] 2,977,080   1.58MB/s 時間 1.8s   

2021-09-23 17:05:58 (1.58 MB/s) - `sqlite-autoconf-3360000.tar.gz' へ保存完了 [2977080/2977080]

③ダウンロードしたファイルを解凍します。

tar xvfz sqlite-autoconf-3360000.tar.gz

解凍したディレクトリへ移動します。

cd sqlite-autoconf-3360000

④ビルドしてインストールします。

./configure --prefix=/usr/local
make
sudo make install

⑤ビルドの結果を確認します。

sudo find /usr/ -name sqlite3

以下のような実行結果が出ます。

/usr/bin/sqlite3
/usr/lib64/python2.7/sqlite3
/usr/lib64/python3.7/sqlite3
/usr/local/bin/sqlite3
/usr/local/lib64/python3.7/site-packages/django/db/backends/sqlite3

⑥不要なファイル、ディレクトリを削除します。

cd ../
rm -rf ./sqlite-autoconf-3360000

⑦インストール後のバーションを確認します。

sqlite3 --version
3.36.0 2021-06-18 18:36:39 5c9a6c06871cb9fe42814af9c039eb6da5427a6ec28f187af7ebfb62eafa66e5

⑧sqlite3をバックアップし、シンボリックリンクを作成します。

sudo mv /usr/bin/sqlite3 /usr/bin/sqlite3_old
sudo ln -s /usr/local/bin/sqlite3 /usr/bin/sqlite3

⑨共有ライブラリへパスを通します。

vi ~/.bashrc

以下のような内容を記述します。

export LD_LIBRARY_PATH="/usr/local/lib"

設定を追加しないと、ターミナルを起動するたびに実行することになります。

SQLite3のバージョン確認

①Python3を起動します。

python3

②以下の記述でバージョンを確認します。

>>> import sqlite3
>>> sqlite3.sqlite_version

結果:

'3.36.0'

③Python3を終了します。

>>> exit()

これでDjango簡易サーバーの起動ができると思います。

python3 manage.py runserver 0.0.0.0:8080

次回

DRFによるアップロダを作成します。

【API】DRFのアプロダ作成 その①シリアライザを作る【Django】


トラックバック用のURL
プロフィール

名前:イワサキ ユウタ 職業:システムエンジニア、ウェブマスター、フロントエンドエンジニア 誕生:1986年生まれ 出身:静岡県 特技:ウッドベース 略歴 20

最近の投稿
人気記事
カテゴリー
広告