使用Sequelize

时间:2015-04-25 14:00:48

标签: javascript mysql node.js sequelize.js

当我尝试连接到服务器上的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上运行的,其中节点正在Passenger后面运行(尽管如果我直接运行带有节点的应用程序也会出现错误)。我在同一台服务器上运行nginx和PHP,其中另一个PHP应用程序连接到数据库,如果这有任何相关性。

可能导致此问题的原因是什么?

1 个答案:

答案 0 :(得分:7)

我也尝试使用MySQL模块直接连接到数据库,但这给了我同样的错误。在寻找同一问题的解决方案,但与MySQL模块而不是Sequelize相关时,我发现了这一点:connect ECONNREFUSED - node 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
    }
});