Heroku 部署后 Django(djongo) 无法连接到 MondoDB Atlas
Django(djongo) can't connect to MondoDB Atlas after Heroku deployment
我设法让它在本地工作(不同的集群,单独的 settings.py),但在部署到 Heroku 之后就不行了。
Heroku - 使用 postgresql 自动添加 DATABASE_URL 配置变量,我不能 remove/edit 它。
MongoDB Atlas - 我已经将 MongoDB Atlas 集群设置为允许来自任何地方的 IP。而且密码没有搞笑字符。
django 制作settings.py
DATABASES = {
'default': {
'ENGINE': 'djongo',
'NAME': 'DBProd',
'CLIENT': {
'host': "mongodb+srv://XXX:YYY@ZZZ.pc4rx.mongodb.net/DBProd?retryWrites=true&w=majority",
}
}
}
我运行部署后直接迁移,全部绿色OK
heroku run python manage.py migrate
一切正常,只是 数据没有存储在 MongoDB Atlas 集群 中。有很多来自不同网站的帖子,但它们都有不同的说明......我尝试关注的一些帖子:
-- 一个很迷茫的初学者
对于登陆此的人。在 'host'
下面添加 'authMechanism': 'SCRAM-SHA-1',
将解决问题。
这也发生在我身上,就我而言,Heroku 以某种方式将 postgresql 添加为我的应用程序的附加组件,因此必须先删除它。
查看有关 postgresql 以及如何销毁附加组件的 Heroku 文档:
https://devcenter.heroku.com/changelog-items/438
https://devcenter.heroku.com/articles/managing-add-ons
然后您需要将 MongoDB 配置为您的数据库,方法是在您的数据库 url 中添加 MONGODB_URI config var
。您现在应该可以连接到 MongoDB!
以下文档也有帮助:
https://www.mongodb.com/developer/how-to/use-atlas-on-heroku/
我也遇到了同样的问题。在本地一切正常。问题是在 Heroku 上部署时。我添加了 'authMechanism': 'SCRAM-SHA-1'
并且还通过添加 MONGODB_URI config var
配置了 MongoDB 作为我的数据库。 Heroku 仍然使用 postgresql
自动配置 DATABASE_URL config var
,而我不能 remove/edit 它。
在我的 Javascript 代码中,我使用了 fetch('127.0.0.1:8000/<something>')
,我在 urls.py
中指定了它,这样 views.py
从 pymongo 读取数据并 return 编辑它作为回应。
将我的应用程序部署到 Heroku 后(并将 127.0.0.1:8000
硬编码为 <myappname>.heroku.com
),相同的获取方法似乎 return [] 而不是 json 包含来自MongoDB.
这是我在 post 中发现的最相同的问题,希望我没有脱离主题。
我设法让它在本地工作(不同的集群,单独的 settings.py),但在部署到 Heroku 之后就不行了。
Heroku - 使用 postgresql 自动添加 DATABASE_URL 配置变量,我不能 remove/edit 它。
MongoDB Atlas - 我已经将 MongoDB Atlas 集群设置为允许来自任何地方的 IP。而且密码没有搞笑字符。
django 制作settings.py
DATABASES = {
'default': {
'ENGINE': 'djongo',
'NAME': 'DBProd',
'CLIENT': {
'host': "mongodb+srv://XXX:YYY@ZZZ.pc4rx.mongodb.net/DBProd?retryWrites=true&w=majority",
}
}
}
我运行部署后直接迁移,全部绿色OK
heroku run python manage.py migrate
一切正常,只是 数据没有存储在 MongoDB Atlas 集群 中。有很多来自不同网站的帖子,但它们都有不同的说明......我尝试关注的一些帖子:
-- 一个很迷茫的初学者
对于登陆此的人。在 'host'
下面添加 'authMechanism': 'SCRAM-SHA-1',
将解决问题。
这也发生在我身上,就我而言,Heroku 以某种方式将 postgresql 添加为我的应用程序的附加组件,因此必须先删除它。 查看有关 postgresql 以及如何销毁附加组件的 Heroku 文档: https://devcenter.heroku.com/changelog-items/438
https://devcenter.heroku.com/articles/managing-add-ons
然后您需要将 MongoDB 配置为您的数据库,方法是在您的数据库 url 中添加 MONGODB_URI config var
。您现在应该可以连接到 MongoDB!
以下文档也有帮助: https://www.mongodb.com/developer/how-to/use-atlas-on-heroku/
我也遇到了同样的问题。在本地一切正常。问题是在 Heroku 上部署时。我添加了 'authMechanism': 'SCRAM-SHA-1'
并且还通过添加 MONGODB_URI config var
配置了 MongoDB 作为我的数据库。 Heroku 仍然使用 postgresql
自动配置 DATABASE_URL config var
,而我不能 remove/edit 它。
在我的 Javascript 代码中,我使用了 fetch('127.0.0.1:8000/<something>')
,我在 urls.py
中指定了它,这样 views.py
从 pymongo 读取数据并 return 编辑它作为回应。
将我的应用程序部署到 Heroku 后(并将 127.0.0.1:8000
硬编码为 <myappname>.heroku.com
),相同的获取方法似乎 return [] 而不是 json 包含来自MongoDB.
这是我在 post 中发现的最相同的问题,希望我没有脱离主题。