Не удается подключиться из Sequalize.js, можно подключиться из клиента MySQL - PullRequest
0 голосов
/ 24 ноября 2018

У меня есть две службы докера, одна из которых работает с сервером простых узлов, а другая - с сервером базы данных mysql (фактически, mariadb).

Все экземпляры файла сокетов, упомянутые где-либо в / etc / mysql / say

/var/run/mysqld/mysqld.sock

Это будет важно в ближайшее время.

На моем сервере узлов выполняется некоторый код Sequelize, который пытается подключиться к серверу MySQL.

Всякий раз, когда я пытаюсь подключитьсячерез Sequelize я получаю:

{"statusCode":500,"error":"Internal Server Error","message":"connect ENOENT /var/run/mysqld/mysqld.sock"}

Однако, если я войду в Docker-контейнер Node, я смогу успешно подключиться к MySQL в другом Docker-контейнере с помощью клиента CLI mysql.

Я думаюЯ понимаю, что клиент MySQL использует TCP-соединение, в то время как Sequelize использует сокет-соединение.Но когда Sequelize выдает эту ошибку, он показывает правильный путь к сокету, насколько я знаю.Вот мой конфиг Sequelize:

const options = {
  host: "mysql",
  dialect: "mysql",
  dialectOptions: {
    socketPath: "/var/run/mysqld/mysqld.sock"
  }
};

let sequelize = new Sequelize("ibbr_dev", "devuser", "password", options);

1 Ответ

0 голосов
/ 25 ноября 2018

Файл сокета MySQL недоступен в вашем контейнере Node, он доступен только в контейнере MySQL, поскольку это файл.Вместо того, чтобы устанавливать соединение на основе сокетов Unix, вы должны использовать TCP-соединение (пропуская dialectOptions).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...