当前位置:  开发笔记 > 编程语言 > 正文

Knex Migration Postgres Heroku - 错误:无法获取连接

如何解决《KnexMigrationPostgresHeroku-错误:无法获取连接》经验,为你挑选了1个好方法。

我正在尝试运行我的第一个迁移,它在heroku postgres数据库中创建一个表.

当我尝试运行时,knex migrate:latest --env development我收到错误Error: Unable to acquire a connection.

我试过的事情:

添加?ssl=true到我在process.env.LISTINGS_DB_URL中存储的连接字符串的末尾,因为我知道这有时需要连接到heroku

设置env变量 PGSSLMODE=require

我也偶然发现了这篇文章,有人评论说knex不会接受基于环境的密钥.但是,我正在尝试按照本教程进行操作,这表明它确实如此.我还看到了许多其他引用来强化它.

我还要补充一点,我已经能够从我的应用程序和外部客户端连接到数据库.我在尝试运行knex迁移时遇到此错误.

此外,我已经尝试确定如何检查作为连接字符串发送的内容.在查看knex文档时,我会在"如何调试FAQ部分:"下看到If you pass {debug: true} as one of the options in your initialize settings, you can see all of the query calls being made.有人可以帮我指导我的实际操作吗?或者我已经在我的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'
        }
    }

};

HendPro12.. 5

正如@hhoburg在下面的评论中所指出的,错误Error: Unable to acquire a connection是一个通用消息,表明Knex客户端配置有些不正确.看到这里.

就我而言,Knex没有引用process.env.LISTINGS_DB_URLknexfile.js,因为:

该变量是在我的.env文件中设置的

该dotenv模块并没有被引用/被叫由Knex

设置此问题的正确方法在此处的knex问题跟踪器中有详细说明.



1> HendPro12..:

正如@hhoburg在下面的评论中所指出的,错误Error: Unable to acquire a connection是一个通用消息,表明Knex客户端配置有些不正确.看到这里.

就我而言,Knex没有引用process.env.LISTINGS_DB_URLknexfile.js,因为:

该变量是在我的.env文件中设置的

该dotenv模块并没有被引用/被叫由Knex

设置此问题的正确方法在此处的knex问题跟踪器中有详细说明.

推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有