【发布时间】:2017-05-28 18:01:02
【问题描述】:
我正在尝试运行我的第一次迁移,它在 Heroku postgres 数据库中创建一个表。
当我尝试运行 knex migrate:latest --env development 时收到错误消息
错误:无法获取连接
我尝试过的事情:
- 将
?ssl=true添加到存储在process.env.LISTINGS_DB_URL中的连接字符串的末尾,因为我知道这有时是连接heroku 的要求 - 设置环境变量
PGSSLMODE=require
我还偶然发现了this article,有人评论说 knex 不会接受基于环境的密钥。但是,我试图跟随this tutorial,这表明它确实如此。我还看到了许多其他参考资料,这些参考资料强化了这一点。
我还要补充一点,我已经能够从我的应用程序和外部客户端连接到数据库。我只是在尝试运行 knex 迁移时遇到此错误。
此外,我尝试确定如何检查作为连接字符串发送的内容。一边看knex documentation:
如何调试常见问题解答
如果您将 {debug: true} 作为初始化中的选项之一传递 设置,你可以看到所有的查询调用。
有人可以帮助指导我如何实际执行此操作吗?还是我已经在我的 knexfile.js 中成功地做到了?
相关文件:
// knex.js:
var environment = process.env.NODE_ENV || 'development';
var config = require('../knexfile.js')[environment];
module.exports = require('knex')(config);
// knexfile.js:
module.exports = {
development: {
client: 'pg',
connection: process.env.LISTINGS_DB_URL,
migrations: {
directory: __dirname + '/db/migrations'
},
seeds: {
directory: __dirname + '/db/seeds'
},
debug: true
},
staging: {
client: 'postgresql',
connection: {
database: 'my_db',
user: 'username',
password: 'password'
},
pool: {
min: 2,
max: 10
},
migrations: {
tableName: 'knex_migrations'
}
},
production: {
client: 'postgresql',
connection: {
database: 'my_db',
user: 'username',
password: 'password'
},
pool: {
min: 2,
max: 10
},
migrations: {
tableName: 'knex_migrations'
}
}
};
【问题讨论】:
标签: node.js heroku database-migration knex.js heroku-postgres