【问题标题】:Heroku can't connect with Postgres DB/Knex/ExpressHeroku 无法与 Postgres DB/Knex/Express 连接
【发布时间】:2019-07-15 11:57:28
【问题描述】:

我有一个 Express API 部署到 Heroku,但是当我尝试运行迁移时,它会抛出以下错误:

heroku 运行 knex migrate:latest 运行 knex migrate:latest on ⬢ bookmarks-node-api... up, run.9925 (免费) 使用环境: 生产错误:连接 ECONNREFUSED 127.0.0.1:5432 在 TCPConnectWrap.afterConnect [as oncomplete] (net.js:1117:14)

在我的knexfile.js 中,我有:

production: {
    client: 'postgresql',
    connection: {
      database: process.env.DATABASE_URL
    },
    pool: {
      min: 2,
      max: 10
    },
    migrations: {
      directory: './database/migrations'
    }
  }

我还尝试将迁移目录分配给tableName: 'knex_migrations',这会引发错误:

heroku 运行 knex migrate:latest 运行 knex migrate:latest on ⬢ bookmarks-node-api... up, run.7739 (免费) 使用环境: 生产错误:ENOENT:没有这样的文件或目录,scandir '/app/迁移'

这是在 Heroku 中设置的配置:

-node-api git:(master) heroku pg:info
=== DATABASE_URL
Plan:                  Hobby-dev
Status:                Available
Connections:           0/20
PG Version:            10.7
Created:               2019-02-21 12:58 UTC
Data Size:             7.6 MB
Tables:                0
Rows:                  0/10000 (In compliance)
Fork/Follow:           Unsupported
Rollback:              Unsupported

我认为问题在于,出于某种原因,它正在查看数据库的 localhost,就好像环境被读取为 development 尽管跟踪显示 Using environment: production

【问题讨论】:

    标签: postgresql express heroku knex.js


    【解决方案1】:

    当您提供一个对象作为您的connection 时,您将提供连接信息的各个部分。在这里,您是说您的database 名称是process.env.DATABASE_URL 中包含的所有内容:

    connection: {
      database: process.env.DATABASE_URL
    },
    

    您未提供值的任何键都将返回默认值。一个例子是host 键,默认为本地机器。

    DATABASE_URL 环境变量在单个字符串中包含所有您需要连接的信息(主机、端口、用户、密码和数据库名称)。 That whole value should be your connection setting:

    connection: process.env.DATABASE_URL,
    

    【讨论】:

      【解决方案2】:

      您应该检查 Postgres 插件是否按照 these docs 中的说明设置,因为 DATABASE_URL 已按照 here 的说明自动为您设置。

      【讨论】:

      • Heroku Postgres 应该已经设置了这个变量。用户不选择凭据或主机;这些值应现有的环境变量中检索。 OP,您是否更改了该环境变量的值?
      • 我按照 heroku 文档中的说明设置了 postgres 数据库。我没有更改 heroku 分配的变量的值。编辑问题以显示 heroku pg:config
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-11
      • 1970-01-01
      • 2020-07-14
      • 2014-11-24
      • 1970-01-01
      • 2017-05-28
      • 2020-09-16
      相关资源
      最近更新 更多