You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django 2切换PostgreSQL后出现BaseDatabaseValidation导入错误的解决方法

解决Django 2切换PostgreSQL时的导入错误

我在跟着《Django 2 Web应用开发》做项目,把数据库从SQLite切换到PostgreSQL后,碰到了下面这个导入错误:

Traceback (most recent call last): File "manage.py", line 15, in <module> execute_from_command_line(sys.argv) File "C:\Users\HP\AppData\Local\Programs\Python\Python36\lib\site-packages\django\core\management\__init__.py", line 371, in execute_from_command_line utility.execute() File "C:\Users\HP\AppData\Local\Programs\Python\Python36\lib\site-packages\django\core\management\__init__.py", line 317, in execute settings.INSTALLED_APPS File "C:\Users\HP\AppData\Local\Programs\Python\Python36\lib\site-packages\django\conf\__init__.py", line 56, in __getattr__ self._setup(name) File "C:\Users\HP\AppData\Local\Programs\Python\Python36\lib\site-packages\django\conf\__init__.py", line 43, in _setup self._wrapped = Settings(settings_module) File "C:\Users\HP\AppData\Local\Programs\Python\Python36\lib\site-packages\django\conf\__init__.py", line 106, in __init__ mod = importlib.import_module(self.SETTINGS_MODULE) File "C:\Users\HP\AppData\Local\Programs\Python\Python36\lib\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 "H:\MyMDB\django\config\settings.py", line 16, in <module> from django.db.backends.postgresql_psycopg2.base import ( ImportError: cannot import name 'BaseDatabaseValidation'

当前我的settings.py里的相关配置是这样的:

""" Django settings for config project. Generated by 'django-admin startproject' using Django 2.0.3. ... """
import os
from django.db.backends.postgresql_psycopg2.base import (
    DatabaseFeatures as BasePGDatabaseFeatures,
    DatabaseWrapper as BasePGDatabaseWrapper,
    DatabaseOperations as BasePGDatabaseOperations,
    DatabaseSchemaEditor as BasePGDatabaseSchemaEditor,
    DatabaseClient,
    DatabaseCreation as BasePGDatabaseCreation,
    DatabaseIntrospection,
    BaseDatabaseValidation,
)

# ... 其他配置 ...

# Database
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgredql',
        'NAME': 'mymdb',
        'USER': 'mymdb',
        'PASSWORD': 'development',
        'HOST': '127.0.0.1',
        'PORT': '5432',
    }
}

解决步骤

  • 移除不必要的底层数据库模块导入
    你完全不需要手动导入django.db.backends.postgresql_psycopg2.base里的这些模块,Django会自动处理PostgreSQL的数据库连接逻辑。而且在Django 2.0中,BaseDatabaseValidation已经被移除了,这就是你报错的直接原因。直接删掉settings.py开头那段从from django.db.backends.postgresql_psycopg2.base import (...)的代码即可。

  • 修正数据库引擎的拼写错误
    看你的DATABASES配置里,ENGINE写成了django.db.backends.postgredql——这里多了一个d,正确的引擎名称应该是django.db.backends.postgresql。

  • 确保安装了PostgreSQL的Python驱动
    Django连接PostgreSQL需要依赖psycopg2,如果还没安装,执行下面的命令:

    pip install psycopg2-binary
    

    用psycopg2-binary是因为它不需要本地编译环境,安装起来更简单,适合开发环境使用。

做完以上修改后,运行python manage.py migrate测试一下,应该就能正常连接PostgreSQL并执行数据库迁移了。

内容的提问来源于stack exchange,提问作者Lohith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 10:11:19