Я пытаюсь запустить свою первую миграцию, которая создает единую таблицу в базе данных postgres heroku.Knex Migration Postgres Heroku - Ошибка: невозможно получить подключение
Когда я пытаюсь запустить knex migrate:latest --env development
Я принимаю ошибку Error: Unable to acquire a connection
.
Что я пробовал:
- добавления
?ssl=true
к концу моей строки соединения, хранящегося в process.env.LISTINGS_DB_URL, как я знаю, иногда это требование, чтобы связаться с Heroku - установки переменная окр
PGSSLMODE=require
я наткнулся this article, где кто-то заметил, что knex не будет принимать ключи, основанные на окружающую среду. Тем не менее, я пытаюсь следовать вместе с this tutorial, что указывает на то, что он делает. Я также видел множество других ссылок, которые еще раз подтверждают это.
Я также добавлю, что мне удалось подключиться к базе данных из моего приложения и внешних клиентов. Я только сталкиваюсь с этой ошибкой при попытке выполнить миграцию knex.
Кроме того, я попытался определить, как я могу проверить, что отправляется как строка соединения. Смотря на knex documentation, я вижу в разделе «Как отладить раздел 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'
}
}
};
Спасибо! Хотя это не помогло решить проблему, основное внимание было уделено устранению неполадок при настройке среды. Я установил dotenv в своем проекте, но knex не ссылался на него при выполнении из cli для миграции. Один поиск «knex и dotenv» привел меня к https://github.com/tgriesser/knex/issues/590, у которого есть ответ. – HendPro12