尝试使用sequelize连接到远程mysql数据库时,我收到错误SequelizeConnectionError: connect ETIMEDOUT
。
当我尝试连接到本地mysql数据库时,可以成功建立连接。
我使用sequelize的models / index.js中包含的默认数据库连接代码new Sequelize(...)
,并使用以下配置(填充了正确的值):
"production": {
"username": "root",
"password": null,
"database": "database_production",
"host": "127.0.0.1",
"dialect": "mysql"
}
我尝试使用简单的php脚本连接到远程数据库并且它有效(因此我们可以排除远程数据库服务器端的问题)
有什么想法吗?
答案 0 :(得分:1)
我遇到了同样的问题,因为我忘记了在云提供商的入站规则中打开与mysql端口3306的连接
答案 1 :(得分:1)
当未建立与sql服务器的连接时,通常会出现此错误。一些需要注意的事情是:
答案 2 :(得分:0)
这可能有几个原因,列出我面临的一些原因,
NODE_ENV=production node server.js
之类的事情。假设server.js
是起始文件。您可以尝试在new Sequelize(...)
之前记录值,这可能会更好地了解发生了什么。答案 3 :(得分:0)
对我来说,我必须:
1)在本地服务器(Xamp / Mamp)上定义我的数据库的确切信息。这意味着我必须具有现有数据库才能连接,用户名和密码是您数据库中的特权帐户。
2)Xamp / Mamp必须在线(当然)。默认端口将被此本地服务器占用,因此请尝试使用mysql 8889
而不是3306
的其他端口。
这就是我尝试过的:
sequelize = new Sequelize('wohui', 'root', 'root', {
dialect: 'mysql',
host: 'localhost',
port: 8889
});
sequelize
.authenticate()
.then(() => {
console.log('Connection has been established successfully.');
})
.catch((err) => {
console.log('Unable to connect to the database:', err);
});
答案 4 :(得分:0)
我面临着同样的问题。在我的情况下,我提供了错误的端口号(我没有更新生产数据库的端口号)