#javascript #node.js #postgresql #heroku #heroku-ci
#javascript #node.js #postgresql #heroku #heroku-ci
Вопрос:
Я некоторое время использовал в Dyno Heroku PostgreSQL, но по какой-то причине он перестал отвечать неделю назад. Я ничего не изменил, и даже при запуске старых коммитов он по-прежнему не отвечает. И, не отвечая, я имею в виду, что когда я пытаюсь подключить клиента к БД, ничего не происходит. Нет сообщения об ошибке, нет тайм-аута, ничего. И в результате я не могу запустить какой-либо тест в Heroku CI. Я использую pg-node для подключения к БД. Это мой код в app.json:
{
"buildpacks": [
{ "url": "heroku/nodejs" }
],
"environments": {
"test": {
"env": { "POSTGRESQL_VERSION": "12" },
"addons": ["heroku-postgresql:in-dyno", "heroku-redis:hobby-dev"]
}
}
}
И вот как я подключаюсь к БД:
client = new Client({
connectionString: process.env.DATABASE_URL
})
client.connect()
.then(ob => {...}
.catch(err => {...}
Он никогда не вводит then
или catch
. Он просто застревает навсегда.
Есть идеи, почему он перестал работать на ровном месте?
Ответ №1:
Иногда случается так, что процесс в Postgres блокируется и не позволяет вашему приложению работать. Сначала вам нужно проверить, не мешает ли какой-либо процесс работе вашего приложения?
- Для этого запустите команду
heroku pg:ps
. - Вы увидите вывод журнала процессов.
- Из выходных данных журнала определите застрявший процесс
- После идентификации завершите этот процесс, используя
heroku pg:kill 1234 -a example_app_name
where1234
— идентификатор процесса. - Если вы не можете определить идентификатор застрявшего процесса, то уничтожьте все процессы, использующие
heroku pg:killall -a example_app_name
. - После этого вам следует перезапустить свое приложение, чтобы удалить все предыдущие плохие соединения:
heroku restart -a example_app_name
Комментарии:
1. Когда я запускаю heroku pg: ps -a my-app-name, он возвращает мне ошибку «в my-app-name нет баз данных». Я использую в Dyno PostgreSQL только для CI. Возможно, это было непонятно.
2. Вы должны написать имя своего приложения в месте
my-app-name
. Когда мы создаем приложение на Heroku, у него есть уникальное имя. Используйте это имя вместоmy-app-name
.3. Да, я поместил свое имя на место my-app-name . Дело в том, что приложение не использует пользовательский pg, это делает CI.
4. Нет, это не так. Извините, я не могу поделиться с вами своим репозиторием
Ответ №2:
По какой-то причине pg
помогло обновление пакета.