Sequelize连接被拒绝错误:连接ECONNREFUSED 127.0.0.1:3306。

6

我正在使用Sequelize作为我的Node.js应用程序和MySQL数据库的ORM。在遵循一些教程之后,我添加了连接MySQL到Node的代码,但在输入npm start命令后,我得到了以下错误信息:

无法连接到数据库:{ SequelizeConnectionRefusedError: connect ECONNREFUSED 127.0.0.1:3306 }

 const Sequelize = require('sequelize');

 // Option 1: Passing parameters separately
 const sequelize = new Sequelize('Education', 'root','', {
 host: '127.0.0.1',
 dialect: 'mysql'
 } );

  //test db 
 sequelize
.authenticate()
.then(() => {
  console.log('Connection has been established successfully.');
})
 .catch(err => {
 console.error('Unable to connect to the database:', err);
});

你的电脑上安装了MySQL服务器吗? - Tien Duong
如果您将“127.0.0.1”替换为“localhost”,是否会出现相同的错误? - Eflyax
问题已解决,我在phpMyadmin中使用的是端口:3307而不是3306。 - Anas Zayene
7个回答

5
问题已解决,我在phpMyadmin中使用的端口是3307而不是3306。

4

Node.js使用的FIX:

目前版本的Sequelize(7)只适用于Node.js版本^12.22.0^14.17.0^16.0.0www.sequelize.org表示,一些其他版本也可能适用。

使用NVM安装并切换到版本16.0.0:

如果您还没有安装Node版本管理器,可以使用以下命令进行安装:

$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash

然后使用nvm i 16.0.0安装版本16,然后使用nvm use 16.0.0告诉您的应用程序使用它。


4
在方言选项中添加 `socketPath`。
示例代码片段:
// Option 1: Passing parameters separately
const sequelize = new Sequelize('Education', 'root', '', {
  host: '127.0.0.1',
  dialect: 'mysql',
  dialectOptions: {
    socketPath: '/Applications/MAMP/tmp/mysql/mysql.sock'
  }
});

我遇到了同样的错误,有了你的帮助才解决了。但是为什么要加上socketPath呢?为什么不只用host和dialect就能正常工作呢?在生产环境中,我需要保留socketPath吗?谢谢。 - undefined

1

只需重新启动mysql服务器。

Linux和Mac:

service mysql restart

Windows:

使用Windows+R键打开运行窗口。 其次,输入services.msc并按Enter: 找到mysql并重新启动服务。


1
谢谢,重新启动postgresql对我有帮助。 - Schon wieder am pasten naja

1
解决方案只是启动您的Xampp Apache和MySQL服务。enter image description here

这并没有回答问题。一旦您拥有足够的声望,您将能够评论任何帖子;相反,提供不需要询问者澄清的答案。- 来自审核 - Insane Skull

0
如果您在 Windows 上运行 XAMPP 服务器,请首先启动带有 MySQL 的 Apache 服务器。
您可能会遇到此错误,因为您的服务器未运行。
请检查您的服务器并在必要时重新启动。

-1

我已经移除了端口选项,问题已解决。

const sequelize = new Sequelize('dbname', 'dbuser', 'pass', {
    dialect: 'mysql',
    host: "127.0.0.1",
    operatorAlias:false,
    logging:false,
    pool: {
        max: 5,
        idle: 30000,
        acquire: 60000,
    },
    
})

移除端口选项可能仅适用于您的设置。正如作者随后提到的那样,在他们的设置中,他们的端口与默认值不同,因此出现了连接错误。 - Evan P

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接