web-dev-qa-db-ja.com

django新しいsqliteバージョンが見つかりませんか?(SQLite 3.8.3以降が必要です(3.7.17が見つかりました))

DjangoプロジェクトをCentos 7 vpsにクローンし、今それを実行しようとしていますが、migrateをしようとするとこのエラーが発生します。

$ python manage.py migrate
Django.core.exceptions.ImproperlyConfigured: SQLite 3.8.3 or later is required (found 3.7.17).

Sqliteのバージョンを確認したところ、3.7.17だったので、sqliteのWebサイトから最新バージョンをダウンロードして古いバージョンに置き換えました。バージョンを設定すると、次のようになります。

$ sqlite3 --version
3.27.2 2019-02-25 16:06:06 bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0f6d7

それでもプロジェクトを移行しようとすると、以前とまったく同じメッセージが表示され、新しいバージョンが見つかりません。私はLinuxを初めて使用するので、助けていただければ幸いです。

19
SIMMORSAL

SQLite Pythonが使用しているバージョンを確認するには:

$ python
Python 3.7.3 (default, Apr 12 2019, 16:23:13) 
>>> import sqlite3
>>> sqlite3.sqlite_version
'3.27.2'

私にとって新しいバージョンのsqlite3は/ usr/local/binにあるので、Pythonを再コンパイルして、そこに表示するように指示する必要がありました。

Sudo LD_RUN_PATH=/usr/local/lib ./configure --enable-optimizations
Sudo LD_RUN_PATH=/usr/local/lib make altinstall

お役に立てば幸いです。

4
Mark Bailey

CentOS 7.6 および Python 3.7. バージョンでも同じエラーが発生しました。 Django 2.2。* あるバージョンを使用していると思います。最新の Django 2.2 では、問題の原因である SQLIte バージョンが変更されました。

これは リリースノートDjango 2.2 について SQLite です。

SQLiteのサポートされる最小バージョンが3.7.15から3.8.3に増加しました。

したがって、このコマンドを使用して、最新バージョンの Django 2.1 をインストールできます。

pip install Django==2.1.*

問題は解決したと思います。

32

次のコードパッチで同様の状況を解決しました。私が自分のcentos7で使用したこれらの手順に従ってください。すべて問題なく動作するはずです。ただpythonではなくpython3を呼び出していることをcentos7に通知することを忘れないでください。そうしないと、デフォルトのpython2が呼び出され、続いてvirtualenvに一連のエラーが発生します。

Python3のインストール(ソースから):

cd ~
wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tar.xz
tar xJf Python-3.7.3.tar.xz
cd Python-3.7.3
./configure
make && make install
export PATH=$HOME/opt/python-3.7.3/bin:$PATH

次にsource .bash_profileを実行します

確認

python3 --version
Python 3.7.3 

Sqlite3のインストール(ソースから):

$ cd ~
$ wget https://www.sqlite.org/2019/sqlite-autoconf-3290000.tar.gz
$ tar zxvf sqlite-autoconf-3290000.tar.gz
cd sqlite-autoconf-3290000

$./configure --prefix=$HOME/opt/sqlite
$ make && make install

これは、centos7がpython3を探す場所を知っていること、およびpython2をデフォルトにしないことを覚えておくべきことです。 .bash_profileで、このコードをコピーして貼り付けるか、パスを適宜編集します。

export PATH=$HOME/opt/sqlite/bin:$PATH
export LD_LIBRARY_PATH=$HOME/opt/sqlite/lib
export LD_RUN_PATH=$HOME/opt/sqlite/lib

source .bash_profileを実行して永続化します。これでsqlite3 version >= 3.8は完了です。それを確認します。

sqlite3 --version 
3.29.0 2019-07-10 17:32:03

その後、引き続きpython3を使用して、Django-2.2などのpython3モジュールをインストールできます。

python3.7 -m pip3 install virtualenv

(myvenv37)[me@test my_project]$ python3.7 -m pip3 install Django
Successfully installed Django-2.2.3 pytz-2019.1 sqlparse-0.3.0

覚えておいてください

PYTHON3.7 -m pip3 install MODULE

(myvenv37)[me@test my_project]$ python3.7 manage.py runserver 

サーバーが実行されている必要があります。

したがって、結論として、上記の場合はmigrateであり、次のようになります。

(venv)[me@test my_project]$ python3.7 manage.py migrate
10
Laenka-Oss

Django 2.2 sqliteバージョンが必要> = 3.8.3

だから解決策はsqliteを更新する

  1. sqlite からダウンロードし、source_codeバージョンを選択します
  2. tar -zxvf sqlite-xxx.tar.gz && cd xx
  3. ./configure && make && make install
  4. mv/usr/bin/sqlite3 /usr/bin/sqlite3.bak
  5. mv xxx/sqlite3/usr/bin/sqlite3
  6. export LD_LIBRARY_PATH="/usr/local/lib"そしてそれを〜/ .bashrcに書き込みます

test1:

sqlite3 --version 

あなたのバージョンでなければなりません

test2:

$python
>>> import sqlite3
>>> sqlite3.sqlite_version

あなたのバージョンでなければなりません

6
pumpkindle

同じ問題があり、しばらくの間苦労しました。私にとって最良の解決策は、settings.pyファイルのDATABASESセクションをコメント化することでした。

SQLiteデータベースを使用したくないので、問題はもう存在しません。後で、有効なデータベースでデータベース情報を更新できます。

2
Wojtek

別のオプションは、アトミックリポジトリを使用することです

wget -O - http://updates.atomicorp.com/installers/atomic |sh
yum install  atomic-sqlite
LD_LIBRARY_PATH='/opt/atomicorp/atomic/root/usr/lib64/' python3
>>> import sqlite3
>>> sqlite3.sqlite_version
'3.8.5'
0
Stavinsky