将 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 连接不起作用的主要内容,如果未能解决你的问题,请参考以下文章
使用 Postgres/Knex 在 JSONB 列中存储对象