【问题标题】:Unable to connect to Mongodb database from heroku无法从heroku连接到Mongodb数据库
【发布时间】:2020-09-29 10:48:42
【问题描述】:

我使用yarn create strapi-app velankannimatha 创建了一个strapi 网站,并选择了mongo 作为数据库。我在 MongoDB atlas 中创建了一个名为 velankannimathadb 的数据库。

在设置配置变量(即DATABASE_URIDATABASE_NAME)后,我将网站推送到 Heroku。

但应用程序不断崩溃。当我检查日志时,它说

服务器无法正常启动。 连接到 Mongo 数据库时出错。服务器选择在 30000 毫秒后超时

我可以在本地访问数据库(在开发模式下)。它仅在从 Heroku 运行时失败。 非常感谢任何帮助

【问题讨论】:

    标签: mongodb heroku strapi mongodb-atlas heroku-cli


    【解决方案1】:

    这可能是由于 Mongo Atlas 只允许来自特定 IP 地址的连接。见the docs。尽管不推荐,但您可以使用 0.0.0.0/0 使集群可用于任何 IP。您可能还会发现troubleshooting docs 也很有帮助。

    【讨论】:

    • 尝试更改为 0.0.0.0/0,但没有任何变化
    【解决方案2】:

    您需要将 config/server.js 主机密钥从 localhost 更改为 0.0.0.0,因为 Strapi 正在尝试绑定到 localhost,而 Heroku 正在寻找暴露的服务器以“代理”

    前面的答案也可能是您的 Mongo 集群确实需要允许访问 0.0.0.0/0,因为 heroku dynos 会随着时间的推移而变化并且每次都使用不同的 IP。

    【讨论】:

    • // config/server.js module.exports = ({ env }) => ({ host: env('HOST', '0.0.0.0'), port: env.int('PORT', 1337), });现在是这样
    【解决方案3】:

    它现在正在工作。出了问题的是我使用的是 MongoDB 版本2.2.12 or later(根据documentation)。当我切换到版本3.6 or later 并使用更新的连接字符串时,一切正常。

    此外,从终端添加连接字符串作为配置变量会导致问题,即使它被保存,某些字符也会丢失。所以我从浏览器中添加了它们。

    这个article 在媒体上也有很大帮助。

    【讨论】:

      猜你喜欢
      • 2023-01-31
      • 2014-03-30
      • 2013-04-19
      • 2020-10-12
      • 2020-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多