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

部署Flask API到Heroku时MySQL连接失败致应用崩溃求助

解决Heroku部署Flask API无法连接MySQL的问题

核心原因:Heroku容器里的localhost指的是容器自身,不是你本地电脑的MySQL服务器,所以部署后没法访问本地数据库,直接导致连接失败、应用崩溃。

1. 改用Heroku云端MySQL服务

Heroku提供官方支持的MySQL附加组件,比如ClearDB或JawsDB,直接创建云端数据库实例:

  • 打开终端,执行命令创建ClearDB免费实例:
    heroku addons:create cleardb:ignite
    
  • 创建完成后,Heroku会自动生成CLEARDB_DATABASE_URL环境变量,里面包含完整的数据库连接信息(用户名、密码、主机、数据库名)。

2. 修改Flask代码,从环境变量读取数据库配置

不要在代码里硬编码localhost等本地配置,改为读取Heroku提供的环境变量,同时保留本地开发的兼容配置:

import os
import mysql.connector
from flask import Flask

app = Flask(__name__)

# 处理数据库连接配置
def get_db_config():
    # 优先读取Heroku环境变量
    db_url = os.getenv('CLEARDB_DATABASE_URL')
    if db_url:
        # 解析CLEARDB_DATABASE_URL格式:mysql://user:password@host/db_name
        _, auth_host_db = db_url.split('://')
        auth_host, db_name = auth_host_db.split('/')
        user, pass_host = auth_host.split(':')
        password, host = pass_host.split('@')
        return {
            'host': host,
            'user': user,
            'password': password,
            'database': db_name
        }
    else:
        # 本地开发用的配置
        return {
            'host': 'localhost',
            'user': '你的本地MySQL用户名',
            'password': '你的本地MySQL密码',
            'database': '你的本地数据库名'
        }

# 建立数据库连接
db_config = get_db_config()
db = mysql.connector.connect(**db_config)

3. 部署后验证

  • 查看Heroku环境变量是否正确生成:
    heroku config
    
  • 实时查看应用日志,确认数据库连接是否正常:
    heroku logs --tail
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 22:55:17