Тайм-аут соединения с узлом postgres в Heroku

Я пытаюсь подключиться к базе данных Postgres из моего приложения узла Heroku, которое работает при локальном запуске как через узел, так и при запуске heroku local web команда, но при запуске на Heroku время ожидания истекает при ожидании pool.connect

Я запускаю следующий фрагмент кода через консоль Heroku (я также пробовал использовать этот код напрямую в своем приложении, но это более эффективно, чем повторное развертывание каждый раз):

node -e "
    const { Pool } = require('pg');

    const pool = new Pool({
    connectionTimeoutMillis: 15000,
      connectionString: process.env.DATABASE_URL + '?sslmode=require',
      ssl: {
        rejectUnauthorized: true
      }
    });

    console.log('pool created');
    (async() => {

     try {
        console.log('connecting');
        const client = await pool.connect(); // this never resolves
        console.log('querying');
        const { rows } = await client.query('SELECT * FROM test_table LIMIT 1;');
        console.log('query success', rows);
        client.release()
      } catch (error) {
        console.log('query error', error);
      }
    })()
"

То, что я пробовал до сих пор:

  • Используя pg Clientвместо того Pool
  • С помощью ssl: true вместо того ssl: { rejectUnauthorized: true }
  • С помощью client.query без использования pool.connect
  • Увеличено и опущено connectionTimeoutMillis (он быстро разрешается при локальном запуске, поскольку я запрашиваю базу данных, в которой есть только одна строка)
  • Я также пробовал использовать обратные вызовы и обещания вместо async / await
  • Я пробовал установить connectionString как с ?sslmode=require параметр и без него
    • Я пробовал использовать версии pg ^7.4.1 а также ^7.18.2 уже

Я предполагаю, что мне чего-то не хватает в настройке Heroku или SSL, любая помощь будет принята с благодарностью, спасибо!

0 ответов

Другие вопросы по тегам