Nodejs 连接 mysql时报Error: Cannot enqueue Query after fatal error错误的处理办法
作者:北漂燕郊杨哥 发布时间:2024-01-15 11:47:34
Nodejs 连接 mysql时报Error: Cannot enqueue Query after fatal error错误的处理办法
一、nodejs连接mysql?
npm install mysql --save
创建连接代码 db.js
//导入mysql连接包
const mysql = require('mysql');
let dbconfig ={
host: 'db_host',
user: 'db_user',
password: 'db_pass',
database: 'db_name',
debug: true
};
function handleDisconnection() {
db = mysql.createConnection(dbconfig);
db.connect(function (err) {
if (err) {
console.log('db connect error:' + err.message + "2秒后重连");
setTimeout(handleDisconnection, 2000);
}
});
db.on('error', function (err) {
console.log(err);
if (err.code === 'PROTOCOL_CONNECTION_LOST') {
console.log('db error执行重连:' + err.message);
handleDisconnection();
} else {
throw err;
}
});
db.querySync = function(sql) {
return new Promise(function(resolve, reject) {
db.query(sql, function(error, results, fields) {
if(error) reject(error);
else resolve({results, fields})
})
})
};
return db;
}
//创建连接conn
exports.db = handleDisconnection();
二、Nodejs 连接 mysql时报错 Error: Cannot enqueue Query after fatal error
1.原配置参数
let dbconfig ={
host: 'db_host',
user: 'db_user',
password: 'db_pass',
database: 'db_name',
debug: true
};
只要加上useConnectionPooling: true参数就可以了
2.新配置参数
let dbconfig ={
host: 'db_host',
user: 'db_user',
password: 'db_pass',
database: 'db_name',
useConnectionPooling: true,
debug: true
};
补充:Node.js连接MySQL数据库报错
解决Node.js第一次连接MySQL数据库时出现[SELECT ERROR] - ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client
的错误。
报错原因:mysql8.0以上的加密方式,Node.js还不支持。
解决方法:
进入mysql(cmd管理员模式)
1.第一步:启动mysql服务,可以通过net start mysql
命令实现
2.第二步:在命令行输入:mysql -u用户名 -p密码
,回车;
-h表示服务器名,localhost表示本地,-hlocalhost 可不输入;
-u为数据库用户名,root是mysql默认用户名;
-p为密码,如果设置了密码,可直接在-p后链接输入,如:-p123456,用户没有设置密码,显示Enter password时,直接回车即可。)
例子:mysql -hlocalhost -uroot -p123456
,包含了密码会直接进入
3.进入后是这样的:
4.输入MySQL语句
先输入alter user 'root'@'localhost' identified with mysql_native_password by '123456';
出现:
再输入flush privileges;
出现:
问题解决了,再次运行就不会报错了
参考文章:
https://blog.csdn.net/weixin_43042683/article/details/106779060
https://www.cnblogs.com/jing-tian/p/11688073.html
来源:https://blog.csdn.net/itopit/article/details/130620406


猜你喜欢
- 功能:获取android设备中某一个app的cpu和内存环境:python和adb使用方法:使用adb连接android设备,打开将要测试的
- 如下所示:#-*- encoding:utf-8 -*-import csvimport sys,osimport pymysql def
- 处理上传的文件: f1 = request.FILES['pic'] fname = '%s/%s' % (
- 0.前言最近学习的python第一个项目实战,《外星人入侵》,成功实现所有功能,给大家提供源代码环境安装:python 3.7+ pygam
- 如下所示:#!/usr/bin/env python# -*- coding: utf-8 
- 常用的代码UPDATE `表名` SET `字段名`=ceiling(rand()*500000+500000) WHERE (条件);up
- 在开发django项目时,启动开发服务器的命令为:python manager.py runserver [port]其中,[port]选项
- 数据挖掘的过程中,数据进行处理是一重要的环节,我们往往会将其封装成一个方法,而有的时候这一个方法可能会被反复调用,每一次都对数据进行处理这将
- 1. TVP, 表变量,临时表,CTE 的区别 TVP和临时表都是可以索引的,总是存在tempdb中,会增加系统数据库开销,而表变量和CTE
- 我就废话不多说了,直接上代码吧!import cv2img = cv2.imread("1.jpg")b, g, r =
- 别人复制你网站的文章时自动加上注释,这个功能你在很多网站应该都有体会过,当我们复制一段内容时,就自动在文章后面加上了网站的一些
- 本文实例为大家分享了js编写贪吃蛇小游戏的具体代码,供大家参考,具体内容如下刚学完js模仿着教程,把自己写的js原生小程序。HTML部分&l
- 第一段代码:#!/usr/bin/python# -*- coding: utf-8 -*-import emailimport mimet
- 在了解了XHTML 2的进展之后,我们再来看看X/HTML 5 的进展。X/HTML 5酷在什么地方章节元素的构想X/HTML 5引入新的元
- TensorFlow中tf.batch_matmul()用法如果有两个三阶张量,size分别为a.shape = [100, 3, 4]b.
- 自己从工艺品设计到平面设计到网络设计,虽然设计原则不离其宗,但经验下来的心得告诉自己,设计媒介的变化带来很多媒介自身的特殊性,下面总结下网站
- 一、语言结构和注意事项package main // 声明 main 包,表明当前是一个可执行程序import "fm
- 一。首先,添加如下存储过程CREATE PROCEDURE dbo.ChangeObjectOwner @Ol
- 来做一个快速测验-以下代码输出什么?vals := make([]int, 5)for i := 0; i < 5; i++ { va
- 前言利用Python+graphics模块实现AI五子棋。让我们愉快地开始吧~~~效果展示源码import sysimport cfgfro