我正在尝试运行我的第一个迁移,它会在Heroku postgres数据库中创建一个单一的表。
当我尝试运行knex migrate:latest --env development
时,我收到了以下错误:
错误:无法获取连接
我尝试过的事情:
- 将
?ssl=true
添加到存储在process.env.LISTINGS_DB_URL
中的连接字符串的末尾,因为我知道这有时是与Heroku连接所需的条件之一。 - 设置环境变量
PGSSLMODE=require
我还偶然发现了这篇文章,其中有人评论说knex不接受基于环境的键。 然而,我正在尝试遵循这个教程,该教程表明它可以接受键。 我还看到了许多其他引用,这些引用强化了这一点。
我还要补充的是,我已经能够从我的应用程序和外部客户端连接到数据库。 我只在尝试运行knex迁移时遇到此错误。
此外,我尝试确定如何检查作为连接字符串发送的内容。 在查看knex文档时:
How do I debug FAQ
如果您将{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'
}
}
};