質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

Q&A

解決済

1回答

2818閲覧

django.core.exceptions.ImproperlyConfigured: SQLite 3.8.3 or later is required (found 3.7.17).

退会済みユーザー

退会済みユーザー

総合スコア0

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

0グッド

0クリップ

投稿2020/05/03 15:19

前提・実現したいこと

現在、Apache+mod_wsgi+DjAangoでwebアプリを開発しています。
よくあるエラーだとは思いますが、理解できなかったので質問させてください。

こちらのサイトを見ながら、sqlite3のバージョンアップをしたのですが、うまくいきません。
ローカルサーバーでは実行できるもの、Apacheで実行するとブラウザに、500 Internal Server Errorと表示されます。以下がそのエラーログです。ここでいうところの、check_sqlite_version()はどこのsqlite3のバージョンを参照しているのでしょうか。

改善方法と一緒に教えていただけたら嬉しいです。

発生している問題・エラーメッセージ

[Sun May 03 23:42:35.520593 2020] [wsgi:error] [pid 14428] File "/home/ksrk/djangoenv/lib64/python3.6/site-packages/django/db/backends/sqlite3/base.py", line 68, in <module> [Sun May 03 23:42:35.520612 2020] [wsgi:error] [pid 14428] check_sqlite_version() [Sun May 03 23:42:35.520622 2020] [wsgi:error] [pid 14428] File "/home/ksrk/djangoenv/lib64/python3.6/site-packages/django/db/backends/sqlite3/base.py", line 65, in check_sqlite_version [Sun May 03 23:42:35.520626 2020] [wsgi:error] [pid 14428] raise ImproperlyConfigured('SQLite 3.8.3 or later is required (found %s).' % Database.sqlite_version) [Sun May 03 23:42:35.520652 2020] [wsgi:error] [pid 14428] django.core.exceptions.ImproperlyConfigured: SQLite 3.8.3 or later is required (found 3.7.17).

該当のソースコード

$ sqlite3 --version 3.31.1 2020-01-27 19:55:54 3bfa9cc97da10598521b342961df8f5f68c7388fa117345eeb516eaa837bb4d6
$ python manage.py runserver Watching for file changes with StatReloader Performing system checks... System check identified no issues (0 silenced). May 03, 2020 - 23:55:32 Django version 3.0.5, using settings 'mysite.settings' Starting development server at http://127.0.0.1:8000/

試したこと

見よう見まねで
$ export LD_LIBRARY_PATH="/usr/local/lib"
としてみたが、意味はよく分かっていない。

補足情報(FW/ツールのバージョンなど)

CentOS7.4
Apache2.4.6 (CentOS)
Python3.6.4
Django==3.0.5
mod-wsgi==4.7.1
sqlite==3.31.1

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Yasumichi

2020/05/03 15:29 編集

yum では更新できない感じですか? また、/usr/local/bin/sqlite3 はインストールされているという認識で良いですか? sudo find /usr/ -name sqlite3 の結果は、Qiita のページどおりでしたか?
退会済みユーザー

退会済みユーザー

2020/05/03 16:01

>sudo find /usr/ -name sqlite3 の結果は、Qiita のページどおりでしたか? $ sudo find /usr/ -name sqlite3 /usr/lib64/python2.7/sqlite3 /usr/lib64/python3.6/sqlite3 であってますね。 ところで、今改めてrunserverしたところ、こちらでも同様のエラーが出たので、参考にしたサイトの # 共有ライブラリへパスを通す # vi ~/.bashrcで設定を追加(すぐに反映する場合 source ~/.bashrc)しないとターミナルを起動するたびに実行することになります が当たると思われるのですが、どうでしょうか。
Yasumichi

2020/05/04 00:22

それは、必要ですね。念のため、次の内容で追加してみてください。 export LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH"
退会済みユーザー

退会済みユーザー

2020/05/04 01:10

何度か初めからやり直したのですが、ダメでした。 こんな風にもしてみましたが $ echo 'export LD_LIBRARY_PATH="/usr/local/lib"' >> ~/.bashrc $ source ~/.bashrc こちらもダメです。 これは現在、まだsqliteのパスが通っていないという認識でよいでしょうか?
Yasumichi

2020/05/04 01:15

$ /usr/bin/sqlite3 --version の結果もあっていますか?
退会済みユーザー

退会済みユーザー

2020/05/04 02:16

はい。
退会済みユーザー

退会済みユーザー

2020/05/04 13:31 編集

もう一度すみません。 はじめに「yum では更新できない感じですか?」とおっしゃっていたのを思い出して、次のようなコマンドを試したら、sqlite-3.7.17と出ました。これをアップデートする方法はありますか? # yum -y install sqlite 読み込んだプラグイン:fastestmirror Loading mirror speeds from cached hostfile * elrepo: ftp.ne.jp * epel: ftp.riken.jp パッケージ sqlite-3.7.17-8.el7_7.1.x86_64 はインストール済みか最新バージョンです 何もしません
Yasumichi

2020/05/04 13:52

ごめんなさい。手元に CentOS 7.4 の環境がないのでアップデート可能かどうかは分かりません。 $ yum check-update | grep sqlite で目的のバージョンが出れば、 $ sudo yum update sqlite などでアップデート可能だと思います。
Yasumichi

2020/05/04 13:54

あと、 ~/.bashrc も可能な限りで提示できますか?
退会済みユーザー

退会済みユーザー

2020/05/04 15:03

.bashrcのexport LD_LIBRARY_PATH="/usr/local/lib"を全て削除後... $ /usr/local/bin/sqlite3 --version 3.31.1 2020-01-27 19:55:54 3bfa9cc97da10598521b342961df8f5f68c7388fa117345eeb516eaa837bb4d6 $ /usr/bin/sqlite3 --version SQLite header and source version mismatch 2020-01-27 19:55:54 3bfa9cc97da10598521b342961df8f5f68c7388fa117345eeb516eaa837bb4d6 2013-05-20 00:56:22 118a3b35693b134d56ebd780123b7fd6f1497668 $ export LD_LIBRARY_PATH="/usr/local/lib" $ /usr/bin/sqlite3 --version 3.31.1 2020-01-27 19:55:54 3bfa9cc97da10598521b342961df8f5f68c7388fa117345eeb516eaa837bb4d6 #.bashrc # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi # Uncomment the following line if you don't like systemctl's auto-paging feature: # export SYSTEMD_PAGER= # User specific aliases and functions export LD_LIBRARY_PATH="/usr/local/lib"
退会済みユーザー

退会済みユーザー

2020/05/04 15:06

yum info sqliteで確認したところ、yumではsqlite3.7.17までのようです。 export LD_LIBRARY_PATH="/usr/local/lib"した後に、sqlite3.31.1のパスが通ったことが確認できます。 その下が、.bashrcです。
Yasumichi

2020/05/04 15:10 編集

> SQLite header and source version mismatch ここが気になりまね…。 /usr/bin/sqlite3 は、yum で管理しているパッケージなので本当は、/usr/local/bin/ からコピーするのは悪手のような気がしてます。 他に依存パッケージがなければ、yum remove sqlite3 とかでアンインストールしてしまった方が良いような… PATH に /usr/local/bin が優先されるように書けば良さそうですし…。
退会済みユーザー

退会済みユーザー

2020/05/04 15:43

# yum remove sqlite.x86_64 sqlite-devel.x86_64 (省略) --> 新しい変更と依存性の解決を再開しています。 --> トランザクションの確認を実行しています。 ---> パッケージ crontabs.noarch 0:1.11-6.20121102git.el7 を 削除 ---> パッケージ gettext.x86_64 0:0.19.8.1-3.el7 を 削除 --> 依存性解決を終了しました。 エラー: "systemd" を削除しようとしています、保護されています エラー: "yum" を削除しようとしています、保護されています # yum list installed | grep sqlite sqlite.x86_64 3.7.17-8.el7_7.1 @base sqlite-devel.x86_64 3.7.17-8.el7_7.1 @base 先ほどからやっていたんですが、removeでもeraseでもできません。
Yasumichi

2020/05/04 15:49

ありゃ、 systemd や yum が依存しているなら削除できないですね。 ちなみに CentOS 自体を新しいバージョンにするのは難しい状況でしょうか?
Yasumichi

2020/05/04 15:53

ありゃ、 systemd や yum が依存しているなら削除できないですね。 ちなみに CentOS 自体を新しいバージョンにするのは難しい状況でしょうか? 【追記】 それができないなら、sqlite3 は、バックアップしてあった本来のを戻して、MySQL か PostgreSQL など別のデータベースの利用を考えた方が良いかもしれません。
退会済みユーザー

退会済みユーザー

2020/05/04 16:05 編集

IUSレポジトリがCentOS8に対応していないので7を使っています。 MySQLは現在同時に試していたんですが、詰まっていて... 勉強もかねて、別のサーバーを作ってやり直してみます。 ありがとうございました。
guest

回答1

0

ベストアンサー

/home/ksrk/djangoenv/lib/python3.6/site-packages/django/db/backends/sqlite3/base.py, line 65 
のcheck_sqlite_versionをコメントアウトして解決しました。(解決とは言えないかもしれないけど)

決しておすすめできる方法ではありませんが、mysqlclientでも似たようなバージョンエラーが出たため、何かシステムのもとの部分に問題がある気がします。
それでも問題なくうまくいきます。

投稿2020/05/05 13:45

編集2020/05/05 13:46
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問