Flask-SQLAlchemy查询时报无法连接MySQL[Errno -2]问题问询
错误根本原因
该错误是数据库连接URI配置格式错误导致的:
- MySQL连接URI的标准格式为
mysql+pymysql://<用户名>:<密码>@<主机地址>:<端口>/<数据库名>,当前配置错误地将1812(应为端口号或用户名)和主机地址拼接成了1812@127.0.0.1作为主机字段,系统将整个字符串作为域名尝试解析时找不到对应服务,因此抛出Name or service not known报错。 - 报错在调用
first()触发SQL实际执行时抛出,符合SQLAlchemy懒加载的特性:查询对象构造时不会建立数据库连接,只有真正触发结果获取时才会尝试连接数据库,因此错误在此时才暴露。
修复方案
- 查找Flask项目中
SQLALCHEMY_DATABASE_URI配置项的定义,核对格式是否符合标准,下方为正确配置示例:
# 示例:用户名root,密码abc123,主机127.0.0.1,端口3306,数据库名my_app SQLALCHEMY_DATABASE_URI = "mysql+pymysql://root:abc123@127.0.0.1:3306/my_app?charset=utf8mb4"
- 若配置从环境变量读取,检查环境变量的取值是否存在拼写错误,避免将端口/用户名错误拼接至主机地址字段。
- 确认MySQL服务在配置对应端口正常运行,且允许本地地址访问。
内容的提问来源于stack exchange,提问作者Vishal Bhatane
相关产品推荐
相关产品推荐

