无法使用 Sequelize 连接到 MySQL

本教程将介绍无法使用 Sequelize 连接到 MySQL的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

无法使用 Sequelize 连接到 MySQL 教程 第1张

问题描述

尝试连接到我服务器上的 MySQL 数据库时,我总是收到 SequelizeConnectionRefusedError.

登录凭据正确,端口打开,一切看起来都很好(在开发环境中就像一个魅力).

抱歉,背景信息稀少,但我在这里傻眼了——我真的不知道是什么导致了这个问题.

这是我的 mysql --version

mysql  Ver 14.14 Distrib 5.5.43, for debian-linux-gnu (x86_64) using readline 6.3

这是我用来初始化 Sequelize 的代码.我希望它使用的表还不存在,但我很确定这与这个问题没有任何关系.我也尝试使用 root 用户登录,但没有骰子 - 我仍然遇到同样的错误.

var sequelize = new Sequelize("database", username, password, {
 host: "localhost",
 dialect: "mysql",
 port: 3306,
 define: {
  paranoid: true
 }
});

var Model = sequelize.define("Model", {
 md5: {type: Sequelize.STRING(128)},
 ip: {type: Sequelize.STRING(256)},
 url: {type: Sequelize.STRING(1024)}
});

sequelize.sync();

这是在 Ubuntu 14.04 上运行的,其中 node 在Passenger 后面运行(尽管如果我也直接使用 node 运行应用程序也会出现错误).我在同一台服务器上运行 nginx 和 PHP,如果有任何相关性,另一个 PHP 应用程序正在连接到数据库.

什么可能导致这个问题?

推荐答案

我也尝试使用 MySQL 模块直接连接到数据库,但这给了我同样的错误.在寻找相同问题的解决方案,但与 MySQL 模块而不是 Sequelize 相关时,我发现了这个:连接 ECONNREFUSED - 节点 js、sql.

我需要为 mysql 模块提供 socketPath 键.以下是我更改代码以使其工作的方式:

var sequelize = new Sequelize("database", username, password, {
 host: "localhost",
 dialect: "mysql",
 logging: function () {},
 pool: {
  max: 5,
  min: 0,
  idle: 10000
 },
 dialectOptions: {
  socketPath: "/var/run/mysqld/mysqld.sock"
 },
 define: {
  paranoid: true
 }
});

好了关于无法使用 Sequelize 连接到 MySQL的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。