将 Postgres Heroku 与 Knex 连接不起作用

Posted

技术标签:

【中文标题】将 Postgres Heroku 与 Knex 连接不起作用【英文标题】:Connecting Postgres Heroku with Knex not working 【发布时间】:2014-11-24 10:06:58 【问题描述】:

我们在设置 Heroku/Postgres 数据库时遇到困难,Knex 运行我们的查询。我们已经设置了我们的 heroku/postgres 数据库并创建了我们的表,但是我们在使用 Knex 连接到它时遇到了困难。更糟糕的是,几乎没有关于将 Heroku/Postgres 与 Knex 或任何 ORM 连接的文档,因此试图弄清楚这些东西真的很痛苦。

这些是我尝试过的连接模式。

var knex = require('knex')(
  client: 'pg',
  connection: 
    user: username,
    password: password,
    host: host,
    port: port,
    database: database,
    ssl: true
  
  
);

并且...请注意 ssl true 是切换并一起删除无济于事。

  var knex = require('knex')(
    client: 'pg',
    connection: HEROKU_POSTGRESQL_COLOR_URL,
    ssl: true
    
  );

我们也尝试过这种模式:

var pg = require('knex')(
  client: 'pg',
  connection: HEROKU_POSTGRESQL_COLOR_URL
 );

我们还没有下载本地数据库的副本,所以我们运行的每个测试基本上都是一个 git 提交。我们基本上是在对根 (index.html) 页面的 GET 请求测试插入查询。因此,在对主页的任何获取请求中,它都应该在我们的 waterrates 表中插入一些内容。如果我将它从插入切换到选择,它会返回一个对象,但您实际上看不到对象中的任何数据。

我们尝试使用的插入是:

knex.select('*').from('waterrates').then(function(rows)
  return rows;
);

knex('waterrates').insert(name: 'pleeeaseee work', rate: 100).then(function(rows)
   console.log(rows);
)

knex.select().

我们实际上不确定错误可能出在哪里,因为尝试连接不会产生任何错误。这可能很愚蠢,但我们不知道在哪里/如何解决这个问题。任何帮助将不胜感激!

谢谢, 乙

【问题讨论】:

【参考方案1】:

对于任何正在处理这个问题的人。

如果您不使用付费测功机,请将“SSL”设置为 false。

Heroku 仅将“SSL”分配给使用付费 dynos 的用户。

const db = knex(
  client: 'pg',
  connection: 
    connectionString : process.env.DATABASE_URL,
    ssl: false
  
);

【讨论】:

【参考方案2】:

我安装了导致问题的旧版本 PG。我们更改了 package.json 文件以使用最新的 PG。 Heroku 更新了它,它工作了!

附带说明,如果将来有人看到这个,heroku 需要 SSL 连接。工作时请记住这一点。我上面提供的连接字符串应该适合你们。

B

【讨论】:

以上是关于将 Postgres Heroku 与 Knex 连接不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Knex - 已经是最新的

使用 Postgres/Knex 在 JSONB 列中存储对象

无法将 AWS-Postgres 服务器与带有 heroku 托管的 Spring Boot 应用程序连接起来

Knex Heroku 错误:自签名证书

将 Heroku Postgres 连接到 PowerBI

如何使用 knex 和 postgres 避免错误 42702 (AMBIGUOUS COLUMN)