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

配置Django连接MSSQL Server时执行migrate报错求助

解决Django ConnectionDoesNotExist: 连接default不存在 错误

让我帮你一步步排查这个问题,从报错信息和你的配置细节来看,主要有几个关键问题需要解决:

1. 修正DATABASES配置中的NAME字段错误

你的settings.py里DATABASES['default']['NAME']设置成了'localhost',这是错误的!

  • NAME应该是你SQL Server中已经创建好的数据库名称(比如'my_django_db'),而不是主机地址;主机地址已经由HOST字段指定了。
  • 先把这个字段改成你实际要连接的数据库名,比如:
    DATABASES = {
        'default': {
            'ENGINE': 'sql_server.pyodbc',
            'NAME': '你的数据库名称',  # 这里改成实际的数据库名
            'HOST': 'localhost',
            'USER': 'sa',
            'PASSWORD': 'root*+123456*+789',
            'PORT': '1433',
            'OPTIONS': {
                'driver': 'ODBC Driver 13 for SQL Server',
            }
        }
    }
    

2. 解决Python与Django版本的兼容性问题

你当前使用的是Python 3.8和Django 2.1.15,但Django 2.1.x系列只支持Python 3.5-3.7,Python 3.8是不兼容的!
这种版本不匹配会导致很多底层的配置加载异常,包括出现KeyError: 'default'这类奇怪的报错。你有两个选择:

  • 降级Python到3.7版本,确保和Django 2.1.15兼容;
  • 升级Django到2.2.x或更高版本(Django 2.2支持Python 3.5-3.8),同时要确保你的数据库后端(比如django-pyodbc-azure)也升级到对应兼容的版本。

3. 确认DATABASES配置被正确加载

有时候配置文件可能存在语法错误(比如遗漏逗号、括号不闭合),或者配置被其他代码覆盖,导致Django读取不到default连接。你可以临时在manage.py中添加调试代码,验证配置是否被正确加载:

import sys
import django
from django.conf import settings

def main():
    django.setup()
    # 打印加载的数据库配置
    print("Loaded DATABASES config:", settings.DATABASES)
    from django.core.management import execute_from_command_line
    execute_from_command_line(sys.argv)

if __name__ == '__main__':
    main()

运行py manage.py shell,如果输出中没有'default'对应的配置,说明你的settings.py里的DATABASES配置存在语法错误,或者文件位置不正确,需要仔细检查。

4. 验证ODBC驱动的正确性(次要排查)

虽然当前报错是连接不存在,但也可以确认你的ODBC驱动是否正确:

  • 你使用的是ODBC Driver 13 for SQL Server,要确保这个驱动已经安装,并且是32位版本(因为你的Python是32位的Python38-32);如果驱动不匹配,后续连接数据库时也会报错。

优先解决前两个问题(NAME字段和版本兼容),这是导致你当前报错的最可能原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 14:02:47