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

如何解决Django项目连接Azure MySQL数据库超时问题

Django连接Azure MySQL超时问题排查与解决

RuntimeWarning: Got an error checking a consistent migration history performed for database connection 'default': (2003, "Can't connect to MySQL server on 'dummyserver.database.windows.net' (timed out)")

针对你遇到的问题,按以下步骤排查:

  • 检查Azure MySQL防火墙规则
    登录Azure Portal,找到你的MySQL服务器,进入“连接安全性”页面:

    • 添加当前本地机器的公网IP到防火墙规则中;如果是动态IP,可临时添加0.0.0.0/0测试(生产环境禁用此配置)。
    • 确认“允许Azure服务和资源访问此服务器”选项已开启,部分场景下需要同时配置此选项和本地IP规则。
  • 验证Django数据库配置细节
    确保settings.py中的DATABASES配置符合Azure MySQL要求:

    • HOST必须是完整的Azure服务器域名(如dummyserver.database.windows.net)。
    • PORT保持默认的3306。
    • USER格式为<用户名>@<服务器名>,Azure MySQL强制要求此前缀格式。
    • 若密码含特殊字符,用原始字符串r""包裹避免转义问题。
      示例配置:
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': '你的数据库名',
            'HOST': 'dummyserver.database.windows.net',
            'PORT': 3306,
            'USER': 'your-user@dummyserver',
            'PASSWORD': r'your-complex-password',
            'OPTIONS': {
                'ssl': {'ca': '/本地路径/DigiCertGlobalRootG2.crt.pem'},
            },
        }
    }
    
  • 确认SSL连接配置
    Azure MySQL强制要求SSL连接,需从Azure Portal下载官方CA证书(DigiCertGlobalRootG2.crt.pem),并在OPTIONS中指定证书路径。
    可先用命令行测试连接:

    mysql -h dummyserver.database.windows.net -u your-user@dummyserver -p --ssl-mode=REQUIRED --ssl-ca=/本地路径/ca-cert.pem
    

    若命令行能正常连接,说明Django的SSL配置存在疏漏。

  • 排查本地网络限制

    • 检查本地防火墙是否拦截了3306端口的出站请求,临时关闭防火墙测试。
    • 切换网络(如手机热点),排除本地运营商或路由器对3306端口的限制。
  • 规范迁移命令执行

    • 执行迁移前,先运行python manage.py check验证配置语法是否正确。
    • 若使用多环境配置,需指定对应settings文件:python manage.py migrate --settings=你的项目名.settings.production

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 06:22:33