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

Flask应用执行db.create_all()建SQLAlchemy数据库报11001错误

错误核心成因

从堆栈信息能直接定位:pymysql尝试连接名为dbserver的MySQL主机时,发生了DNS域名解析失败(getaddrinfo failed),程序根本没法定位到这个主机对应的网络地址,和db.create_all()本身的ORM逻辑无关,是前置的数据库连接配置出了问题。

对应排查修复步骤
  • 检查Flask配置里的数据库URI主机值:当前配置指向的主机名是dbserver,这个名称是Docker Compose这类容器编排环境里的内部服务名,在你当前的本地Windows开发环境下没有对应的DNS解析记录,自然无法连接。如果你的MySQL是安装在本地的,把主机值改成127.0.0.1/localhost;如果是远程部署的MySQL,改成对应的可访问IP即可。
  • 若确实需要通过dbserver这个域名访问数据库(比如本地部署了关联的Docker服务网络),需要手动在系统hosts文件中添加映射:Windows环境下打开C:\Windows\System32\drivers\etc\hosts,新增一行记录 <MySQL服务实际IP> dbserver,保存配置后再重试连接。
  • 完成主机配置调整后,额外确认网络可达性:对应地址的MySQL服务已经正常启动、MySQL没有绑定仅本地回环地址、防火墙放行了3306端口、数据库账号有从当前IP登录的权限。
快速验证小技巧

不用直接跑完整的Flask初始化流程,先写最简单的pymysql连接脚本测试连通性,能减少排查时间:

import pymysql
# 把参数替换成你修改后的实际数据库配置
test_conn = pymysql.connect(
    host='修改后的实际主机地址',
    port=3306,
    user='你的数据库账号',
    password='你的数据库密码'
)
print("数据库连接测试通过")
test_conn.close()

上述测试脚本运行无报错后,再执行db.create_all()即可正常创建表结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.26 16:06:02