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を初めて使用するので、助けていただければ幸いです。
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
お役に立てば幸いです。
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.*
問題は解決したと思います。
次のコードパッチで同様の状況を解決しました。私が自分の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
Django 2.2 sqliteバージョンが必要> = 3.8.3
だから解決策はsqliteを更新する:
export LD_LIBRARY_PATH="/usr/local/lib"
そしてそれを〜/ .bashrcに書き込みますtest1:
sqlite3 --version
あなたのバージョンでなければなりません
test2:
$python
>>> import sqlite3
>>> sqlite3.sqlite_version
あなたのバージョンでなければなりません
同じ問題があり、しばらくの間苦労しました。私にとって最良の解決策は、settings.pyファイルのDATABASESセクションをコメント化することでした。
SQLiteデータベースを使用したくないので、問題はもう存在しません。後で、有効なデータベースでデータベース情報を更新できます。
別のオプションは、アトミックリポジトリを使用することです
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'