mysql - 无法从 Sequelize.js 连接,可以从 MySQL 客户端连接

标签 mysql docker sequelize.js

我有两个 docker 服务,一个运行简单的节点服务器,另一个运行 mysql(实际上是 mariadb)数据库服务器。

/etc/mysql/say 中任何地方提到的套接字文件的所有实例

/var/run/mysqld/mysqld.sock

这很快就会变得很重要。

我的节点服务器正在运行一些尝试连接到 MySQL 服务器的 Sequelize 代码。

每当我尝试通过 Sequelize 连接时,我都会得到:

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

但是,如果我登录到 Node docker 容器,我可以使用 mysql CLI 客户端成功连接到另一个 docker 容器上的 MySQL。

我想我明白mysql客户端使用tcp连接,而Sequelize使用socket连接。但是,据我所知,当 Sequelize 抛出该错误时,它显示了正确的套接字路径。这是我的 Sequelize 配置:

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

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

最佳答案

MySQL 套接字文件在您的 Node 容器中不可用,它仅在 MySQL 容器中可用,因为它是一个文件。您应该使用 TCP 连接(跳过 dialectOptions),而不是设置基于 unix 套接字的连接。

关于mysql - 无法从 Sequelize.js 连接,可以从 MySQL 客户端连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53455056/

相关文章:

Mysql:与 json_extract 一起使用时,where in 不返回任何行

Mysql 查询检索关系表中缺失的组合

Dockerfile 无法构建

javascript - Sequelize 错误 - "TypeError: hooks.concat is not a function"

node.js - Sequelize - 如何在嵌套关联中使用 where 子句?

node.js - sequelize nodejs 我可以用 1 个 findAll 找到自定义数组中的所有电子邮件吗?

php - 如何根据名称/类别显示结果?

mysql - Sql查询问题从sql查询中找出表名

centos - CentOS 上的 Docker 在运行时报告 "unable to mount sys as readonly"

Docker SCRATCH容器找不到文件