1. 程式人生 > 其它 >centos7執行django3.0測試伺服器報錯ImproperlyConfigured: SQLite 3.8.3 or later is required (found 3.7.17).

centos7執行django3.0測試伺服器報錯ImproperlyConfigured: SQLite 3.8.3 or later is required (found 3.7.17).

技術標籤:隨筆

Django版本

# django-admin version
3.0

測試伺服器執行報錯,這是由於centos7系統自帶的sqlite版本比較低,有多種辦法可以解決這個報錯

(env3) [[email protected] mysite]# python manage.py runserver
Traceback (most recent call last):
File "manage.py", line 22, in <module>
main()
File "manage.py", line 18, in main

execute_from_command_line(sys.argv)
File "/root/env3/lib64/python3.6/site-packages/django/core/management/__init__.py", line 401, in execute_from_command_line
utility.execute()
File "/root/env3/lib64/python3.6/site-packages/django/core/management/__init__.py", line 377, in execute
django.setup()
File "/root/env3/lib64/python3.6/site-packages/django/__init__.py", line 24, in setup
apps.populate(settings.INSTALLED_APPS)
File "/root/env3/lib64/python3.6/site-packages/django/apps/registry.py", line 114, in populate
app_config.import_models()
File "/root/env3/lib64/python3.6/site-packages/django/apps/config.py", line 211, in import_models
self.models_module = import_module(models_module_name)
File "/usr/lib64/python3.6/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 994, in _gcd_import
File "<frozen importlib._bootstrap>", line 971, in _find_and_load
File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 678, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "/root/env3/lib64/python3.6/site-packages/django/contrib/auth/models.py", line 2, in <module>
from django.contrib.auth.base_user import AbstractBaseUser, BaseUserManager
File "/root/env3/lib64/python3.6/site-packages/django/contrib/auth/base_user.py", line 47, in <module>
class AbstractBaseUser(models.Model):
File "/root/env3/lib64/python3.6/site-packages/django/db/models/base.py", line 121, in __new__
new_class.add_to_class('_meta', Options(meta, app_label))
File "/root/env3/lib64/python3.6/site-packages/django/db/models/base.py", line 325, in add_to_class
value.contribute_to_class(cls, name)
File "/root/env3/lib64/python3.6/site-packages/django/db/models/options.py", line 208, in contribute_to_class
self.db_table = truncate_name(self.db_table, connection.ops.max_name_length())
File "/root/env3/lib64/python3.6/site-packages/django/db/__init__.py", line 28, in __getattr__
return getattr(connections[DEFAULT_DB_ALIAS], item)
File "/root/env3/lib64/python3.6/site-packages/django/db/utils.py", line 207, in __getitem__
backend = load_backend(db['ENGINE'])
File "/root/env3/lib64/python3.6/site-packages/django/db/utils.py", line 111, in load_backend
return import_module('%s.base' % backend_name)
File "/usr/lib64/python3.6/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "/root/env3/lib64/python3.6/site-packages/django/db/backends/sqlite3/base.py", line 68, in <module>
check_sqlite_version()
File "/root/env3/lib64/python3.6/site-packages/django/db/backends/sqlite3/base.py", line 65, in check_sqlite_version
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.7.17).

法一:註釋掉預設的sqlite資料庫,改用mysql或postgresql

# vim settings.py

#DATABASES = {
#    'default': {
#        'ENGINE': 'django.db.backends.sqlite3',
#        'NAME': BASE_DIR / 'db.sqlite3',
#    }
#}

法二:升級系統自帶的sqlite3版本

sqlite官網下載:https://www.sqlite.org/download.html

選擇sqlite-autoconf這個,帶configure指令碼方便編譯

解壓&編譯&安裝

tar zxvf sqlite-autoconf-3340000.tar.gz
cd sqlite-autoconf-3340000
./configure
make && make install

確認版本

# /usr/local/bin/sqlite3 --version
3.34.0 2020-12-01 16:14:00 a26b6597e3ae272231b96f9982c3bcc17ddec2f2b6eb4df06a224b91089fed5b

移除老的sqlite3版本,不要直接解除安裝,centos有很多包依賴這個,直接yum remove sqlite會導致系統有問題

# mv /usr/bin/sqlite3 /usr/bin/sqlite3_ori

設定連結庫

# cat /etc/ld.so.conf
include ld.so.conf.d/*.conf
/usr/local/lib    # 這個是追加的,sqlite編譯把lib庫檔案都放在這個路徑下的

# ldconfig  再執行下這個命令,在當前執行時中生效

確認python的sqlite版本


>>> import sqlite3
>>> sqlite3.sqlite_version
'3.34.0'

再次執行django測試服務,就不會再報錯了

# python manage.py runserver
Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).

You have 17 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.

December 29, 2020 - 04:49:57
Django version 3.0, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.