无法从Sequalize.js连接,可以从MySQL客户端连接

时间:2018-11-24 04:05:26

标签: mysql docker sequelize.js

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

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

/var/run/mysqld/mysqld.sock

这很快很重要。

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

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

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

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

我想我了解mysql客户端正在使用tcp连接,而Sequelize正在使用套接字连接。但是,据我所知,当Sequelize抛出该错误时,它显示的是 correct 套接字路径。这是我的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 :(得分:1)

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