我有一个使用 MySQL 作为数据库的 Django 项目。在我的开发机器上,MySQL 数据库在我的本地机器上运行,如下所示:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'xxx',
'USER': 'root',
'PASSWORD': 'xxxx',
'HOST': 'localhost',
#'PORT': '3306',
}
}
我已成功将项目部署到 Heroku,但它一直显示
2003, "Can't connect to MySQL server on 'localhost' ([Errno 111] Connection refused)
因为设置是本地 MySQL 而 views.py
包含导入本地数据库的函数。我仍然不知道如何让网站连接到这个数据库。
有没有办法让它与 Heroku 一起工作,还是我需要找另一个主机?
最佳答案
juanmhidalgo's answer是一个好的开始,可以推广到任意环境变量。但如果您只关心数据库变量,还有另一种解决方案。
默认情况下,Heroku 提供一个 PostgreSQL 数据库,并使用可用于连接到它的连接字符串设置您应用程序的 DATABASE_URL
。
据我所知,各种 MySQL 插件也设置了这个变量,但知道您选择了哪个插件会很有帮助,以便我们确认。它可能需要根据另一个环境变量手动设置。
假设 DATABASE_URL
环境变量设置正确,您可以使用 dj-database-url
直接设置你的数据库,在你的 settings.py
文件中选择提供当变量不可用时使用的回退(例如,在你的开发箱上):
import dj_database_url
DATABASES['default'] = dj_database_url.config(
default='mysql://root:<password>@localhost:3306/<database>',
)
关于python - 如何连接到 Heroku 上的 MySQL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52378074/