knex mysql connect ECONNREFUSED для 1 из 3 приложений на одном сервере - PullRequest
0 голосов
/ 20 февраля 2019

проект node.js с использованием express, knex, dotenv

Я создал копию своего проекта для обработки в качестве промежуточной среды.Он работает на том же хосте, что и мой живой проект, но на другом порту.При запуске сервера ошибок нет.

Однако, когда я перехожу к нему и пытаюсь получить /, который извлекает данные из БД через knex, я получаю эту ошибку в консоли:

Примечание: хотя мойЗначение хоста knexfile - «localhost», ошибка показывает внешний IP-адрес моего веб-сервера как тот, к которому он пытается подключиться (в приведенном ниже фрагменте «mywebserverIP») *

{ Error: connect ECONNREFUSED mywebserverIP:3306
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1082:14)
    --------------------
    at Protocol._enqueue (/usr/home/jessie/gs-staging/node_modules/mysql/lib/protocol/Protocol.js:144:48)
    at Protocol.handshake (/usr/home/jessie/gs-staging/node_modules/mysql/lib/protocol/Protocol.js:51:23)
    at Connection.connect (/usr/home/jessie/gs-staging/node_modules/mysql/lib/Connection.js:118:18)
    at /usr/home/jessie/gs-staging/node_modules/knex/lib/dialects/mysql/index.js:95:18
    at Promise._execute (/usr/home/jessie/gs-staging/node_modules/bluebird/js/release/debuggability.js:313:9)
    at Promise._resolveFromExecutor (/usr/home/jessie/gs-staging/node_modules/bluebird/js/release/promise.js:483:18)
    at new Promise (/usr/home/jessie/gs-staging/node_modules/bluebird/js/release/promise.js:79:10)
    at Client_MySQL.acquireRawConnection (/usr/home/jessie/gs-staging/node_modules/knex/lib/dialects/mysql/index.js:90:12)
    at create (/usr/home/jessie/gs-staging/node_modules/knex/lib/client.js:280:23)
    at tryPromise (/usr/home/jessie/gs-staging/node_modules/tarn/lib/Pool.js:366:22)
    at tryPromise (/usr/home/jessie/gs-staging/node_modules/tarn/lib/utils.js:57:20)
    at Promise (/usr/home/jessie/gs-staging/node_modules/tarn/lib/Pool.js:366:5)
    at new Promise (<anonymous>)
    at callbackOrPromise (/usr/home/jessie/gs-staging/node_modules/tarn/lib/Pool.js:357:10)
    at Pool._create (/usr/home/jessie/gs-staging/node_modules/tarn/lib/Pool.js:307:5)
    at Pool._doCreate (/usr/home/jessie/gs-staging/node_modules/tarn/lib/Pool.js:275:32)
  errno: 'ECONNREFUSED',
  code: 'ECONNREFUSED',
  syscall: 'connect',
  address: 'mywebserverIP',
  port: 3306,
  fatal: true }

IЯ прочитал несколько сообщений о том, что означает отказ в соединении, и единственная причина, по которой я все еще озадачен, заключается в том, что это единственный из трех проектов на этом сервере, использующий этот конфиг, который имеет проблему.

Iиметь другой проект node / express / knex (утилита администратора), который использует ту же конфигурацию knex для подключения к той же базе данных на том же сервере MySQL с теми же учетными данными ... и он работает без проблем. Живой сайт запущен и работаетповсюду, с этой же конфигурацией.

Живая версия, промежуточная копия и утилита администратора имеют идентичные файлы knexfiles.(и сопоставление файлов .env для переменных):

module.exports = {
    client: 'mysql',
    connection: {
        user: process.env.GS_DB_USER,
        password: process.env.GS_DB_PASS,
        host: process.env.GS_DB_HOST,
        database: 'gs'
    },
    pool: {
        min: 1,
        max: 1
        }
}

Я могу только представить, что копия конфликтует с действующим сайтом способом, который я не знаю, чтобы искать.Что мне не хватает?

1 Ответ

0 голосов
/ 20 февраля 2019

Обнаружено, что в сбойном экземпляре значения в файле .env были изменены так, что GS_DB_HOST был определен как общедоступное имя хоста.Вернуло значение localhost, и оно сработало.

Сначала попробуйте проверить все основы!

...