0

我在 Heroku 中有 2 个具有相同代码版本的应用程序,都使用 Heroku Postgres 和免费计划(爱好)。但它们是在不同的时间创建的,有几个月的差异。

问题是,第一个工作正常,但第二个启动时出错

错误:主机“210.221.51.3”、用户“byhoyaaaasdevfr”、数据库“darcnk9hucbap”没有 pg_hba.conf 条目,SSL 关闭

我阅读了有关使用 SSL 的信息,但我想保留免费计划,并且第一个应用程序在没有的情况下也能正常工作。这是连接文件内容:

const parse = require("pg-connection-string").parse;
const config = parse(process.env.DATABASE_URL);

module.exports = ({ env }) => ({
  defaultConnection: "default",
  connections: {
    default: {
      connector: "bookshelf",
      settings: {
        client: "postgres",
        host: config.host,
        port: config.port,
        database: config.database,
        username: config.user,
        password: config.password,
      },
      options: {
        ssl: false,
      },
    },
  },
});

将选项 ssl 更改为 true 抛出

错误错误:自签名证书

  • 我已经重新创建了应用程序和数据库。
  • 我已经成功地将第二个应用程序与第一个数据库连接起来。
  • 本地使用第二个数据库连接凭据会出现相同的错误。
  • 本地使用第一个数据库连接凭据也会出现相同的错误。

Strapi 3.1.5

谢谢你的关注,你太棒了。

4

1 回答 1

1

我们今天遇到了同样的问题,并通过使用Strapi 为 Herokuconfig/env/production/database.js提供的更新来修复它:

const { parse } = require("pg-connection-string");

module.exports = ({ env }) => {
  const { host, port, database, user, password } = parse(env("DATABASE_URL"));

  return {
    defaultConnection: "default",
    connections: {
      default: {
        connector: "bookshelf",
        settings: {
          client: "postgres",
          host,
          port,
          database,
          username: user,
          password,
          ssl: { rejectUnauthorized: false }
        },
        options: {
          ssl: false
        },
      },
    },
  };
};

修复它的部分是ssl: { rejectUnauthorized: false }线。我只是不明白为什么必须在 Heroku pg 上禁用 ssl ......

于 2021-03-14T10:28:50.273 回答