В Dyno Heroku PostgreSQL не отвечает

#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 where 1234 — идентификатор процесса.
  • Если вы не можете определить идентификатор застрявшего процесса, то уничтожьте все процессы, использующие 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 помогло обновление пакета.