我使用 Sequelize 作为我的 Node js 应用程序和 Mysql 数据库的 ORM, 在遵循一些教程之后,我添加了此代码以将 mysql 连接到节点,但是在录制 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);
});
问题已解决,我在 phpMyadmin 中使用端口:3307 而不是 3306
修复 Node.js 使用:
看起来当前版本的sequelize (7) 只适用于Node.js 版本
^12.22.0
、^14.17.0
和^16.0.0
。 www.sequelize.org
说其他一些版本也可能有效。
使用NVM安装并切换到16.0.0版本:
如果您还没有节点版本管理器,您可以安装它
$ 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
使用它。
在方言选项中添加
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'
}
});
只需重新启动mysql服务器即可。
Linux 和 Mac:
重启mysql服务
窗户:
使用 Windows+R 键盘打开 运行 窗口。 其次,输入 services.msc 并按 Enter: 找到 mysql 并重新启动服务。
如果您在 Windows 上运行 XAMMP 服务器,请首先使用 MySQL 启动 apache 服务器
您收到此错误可能是因为您的服务器未运行。
检查您的服务器并在必要时重新启动。
就我而言,我使用的是不同的节点版本(因为我使用 nvm 安装了主要节点版本),请检查您是否安装了其他节点版本。
我已删除端口选项,问题已解决。
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,
},
})