我有一个django项目,它使用mysql作为数据库。在我的开发机器上,mysql数据库在我的本地机器上运行,如下所示:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'xxx',
'USER': 'root',
'PASSWORD': 'xxxx',
'HOST': 'localhost',
#'PORT': '3306',
}
}
我已经成功地将这个项目部署到heroku,但它一直在显示这一点
2003,“无法连接到'localhost'上的mysql服务器([errno 111]连接被拒绝)
因为设置是本地mysql和 views.py
包含导入本地数据库的函数。我仍然不知道如何让网站连接到这个数据库。
有没有办法让这个和heroku一起工作,或者我需要找另一个主持人?
3条答案
按热度按时间7fyelxc51#
Juanmidalgo的答案是一个很好的开始,可以推广到任意环境变量。但如果只关心数据库变量,还有另一种解决方案。
默认情况下,heroku提供postgresql数据库并设置应用程序的
DATABASE_URL
具有可用于连接到它的连接字符串。据我所知,各种mysql加载项也设置了这个变量,但是知道您选择了哪一个会很有帮助,这样我们就可以确认了。可能需要根据另一个环境变量手动设置。
假设
DATABASE_URL
环境变量已正确设置,您可以使用dj-database-url
要直接设置数据库,可以选择在您的settings.py
文件:gev0vcfq2#
一个非常有用的方法是使用django environ并在heroku设置上设置配置选项。
环境变量如下:
关于您的问题,heroku是部署您的项目的一个非常好的选择。
aiazj4mn3#
可以将settings.py升级到包。像这样创建设置文件夹
保留base.py作为settings.py,然后根据env更改所需内容。
你的heroku.py可能是
重要的是告诉部署版本使用新设置。检查wsgi.py
记得换衣服
DJANGO_SETTINGS_MODULE
在heroku到settings.heroku