当我尝试连接到服务器上的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应用程序连接到数据库,如果这有任何相关性。
可能导致此问题的原因是什么?
答案 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
}
});