本文将带您了解关于nodejs连接mysql突然中断问题解决方案的新内容,同时我们还将为您解释nodejs连接mysql的历程的相关知识,另外,我们还将为您提供关于mybatis连接MySQL8出现的
本文将带您了解关于nodejs连接mysql突然中断问题解决方案的新内容,同时我们还将为您解释nodejs连接mysql的历程的相关知识,另外,我们还将为您提供关于mybatis连接MySQL8出现的问题解决方法、node.js实现js连接mysql数据库、node.js连接mysql与基本用法示例、Node.js连接Mysql并进行数据库操作的实用信息。
本文目录一览:
nodejs连接mysql突然中断问题解决方案(nodejs连接mysql的历程)
db/index.js数据库配置文件
一、在数据库连接失败的情况下,回调函数,再次发起连接,直到连接成功为止。
handleDisconnect(){
this.connection.connect(function(err) {
if(err) {
// console.log(''error when connecting to db:'', err);
setTimeout(_this.handleDisconnect, 2000);
}
});
this.connection.on(''error'', function(err) {
if(err.code === ''PROTOCOL_CONNECTION_LOST'') {
_this.handleDisconnect();
} else {
throw err;
}
});
}
二、mysql在8个小时内没有任何操作,就会自动中断连接 因此,每个三个小时每个小时ping一次数据库,保持数据库连接状态
clearInterval(pingInterval);
pingInterval = setInterval(() => {
_this.connection.ping((err) => {
if (err) {
console.log(''ping error: '' + JSON.stringify(err));
}
});
}, 3600000*3);
三、完整代码如下:
// 加载数据库模块
var mysql = require(''mysql'');
var _this;
var pingInterval = null;
var db_config = {
host: "host", //主机地址
user: "user", //数据库用户名
password: "password", //数据库用户密码
database: "database" //数据库名
}
class DB{
constructor(){
_this = this;
this.connection = null;
}
handleDisconnect(){
this.connection = mysql.createConnection(db_config);
//数据库连接
this.connection.connect(function(err) {
if(err) {
// console.log(''error when connecting to db:'', err);
setTimeout(_this.handleDisconnect, 2000);
}
});
this.connection.on(''error'', function(err) {
if(err.code === ''PROTOCOL_CONNECTION_LOST'') {
_this.handleDisconnect();
} else {
throw err;
}
});
// 每个小时ping一次数据库,保持数据库连接状态
clearInterval(pingInterval);
pingInterval = setInterval(() => {
_this.connection.ping((err) => {
if (err) {
console.log(''ping error: '' + JSON.stringify(err));
}
});
}, 3600000*3);
return this.connection;
}
}
module.exports = DB;
使用数据库的文件controller/query.js
在开启事务的时候判断数据库连接是否连接错误, 如果连接错误,再次发起连接。
db.beginTransaction((err)=>{
if(err!==null){
db = _this.handleDisconnect();
db.beginTransaction((err)=>{
callback(err)
})
}else{
callback(err)
}
})
完整代码如下:
const DB = require("../../db/index");
const Async = require("async");
var db;
class Query extends DB{
constructor(){
super()
db = this.handleDisconnect()
}
async getList(limit,page,cate,keywords,grade){
return new Promise((resolve, reject) => {
var mydatas = {data:[],total:0};
// ....此处省略业务代码
// 用Async代替嵌套
var task = [
(callback)=>{
// 开启事务
db.beginTransaction((err)=>{
if(err!==null){
db = _this.handleDisconnect();
db.beginTransaction((err)=>{
callback(err)
})
}else{
callback(err)
}
})
},
(callback)=>{
const sql = `...`;
db.query(sql,(err,res)=>{
callback(err);
})
},
(callback)=>{
// 提交事务
db.commit((err)=>callback(err));
}
];
Async.waterfall(task,(err,res)=>{
if(err){
// 事务回滚
db.rollback();
}else{
resolve(mydatas);
}
})
})
}
}

mybatis连接MySQL8出现的问题解决方法
这篇文章主要介绍了mybatis连接MysqL8出现的问题解决方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
使用MysqL8,在整合ssm框架,用mybatis逆向工程生成的代码测试时,执行到数据库查询前均正常,但进行查询时,便卡主没有反应了,设置了日志、try catch等也不报错,页面就在那一直转,之前mybatis自动生成代码都是正常的,然后在测试类中,使用Connection进行连接测试并查询数据库,也是能够正常查询到数据的:
Connection conn = null; try { String userName = "root"; String password = "111@tesT"; String jdbcurl = "jdbc:MysqL://localhost:3306/test?useUnicode=true&useSSL=false&autoReconnect=true&characterEncoding=UTF-8"; Class.forName("com.MysqL.jdbc.Driver").newInstance(); conn = DriverManager.getConnection(jdbcurl, userName, password); String sql = "select * from tb_user"; PreparedStatement pstmt = conn.prepareStatement(sql); ResultSet rs = pstmt.executeQuery(); String result = ""; while (rs.next()) { int id = rs.getInt("id"); String name = rs.getString("username"); String status = rs.getString("phone"); result += id + "t" + name + "t" + status + "n"; } System.out.println(result);
而逆向工程的却不行:
UserExample example = new UserExample(); UserExample.Criteria criteria = example.createCriteria(); criteria.andIdEqualTo(userId); List list = userMapper.selectByExample(example);//这一步进去后就出不来了。。。
经过确认ssm其他配置文件都没有发现有问题,然后就想是不是自己用的MysqL8版本的问题,毕竟之前使用Navicat连接MysqL8也是出了好几个问题,于是便将mysql-connect-java版本由5.1.6升级为8.0.11,并修改了db.properties文件:
#数据库连接 注意 文件内不要留有空格 jdbc.driver=com.MysqL.cj.jdbc.Driver jdbc.url=jdbc:MysqL://localhost:3306/test?useSSL=false&useUnicode=true&characterEncoding=UTF8&serverTimezone=GMT jdbc.username=root jdbc.password=111@tesT
重启项目后,一切终于正常了。。。。。。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小编。

node.js实现js连接mysql数据库
一、安装包
在对应的目录打开cmd
二、代码&接口
var _mysql = require(''mysql'');
var HOST = ''localhost'';
var PORT = 3306;
var MYSQL_USER = ''root'';
var MYSQL_PASS = ''123456'';
var DATABASE = ''js_login'';
var mysql = _mysql.createConnection({
host: HOST,
port: PORT,
user: MYSQL_USER,
password: MYSQL_PASS,
});
var user = [];
mysql.query(''use '' + DATABASE, function(error, results) {
if(error) {
console.log(''ClientConnectionReady Error: '' + error.message);
mysql.end();
return;
}
});
//查
GetData = function(client)
{
client.query(
''select * from user order by score DESC'',
function selectCb(error, results, fields) {
if (error) {
console.log(''GetData Error: '' + error.message);
client.end();
return;
}
for(var i = 0; i < Math.max(10, results.length); i ++) {
user[i] = results[i];
}
});
};
//改
Update = function(client,userid,score)
{
var userModSql = ''UPDATE user SET score = ? WHERE userid = ?'';
var userModSql_Params = [score,userid];
client.query(userModSql,userModSql_Params,function (err, result) {
if(err){
console.log(''[UPDATE ERROR] - '',err.message);
return;
}
});
for(var i in user) {
if(user[i].userid == userid) {
user[i].score = score;
break;
}
}
};
//删
Delete = function(client,userid)
{
var userModSql = ''UPDATE user SET score = ? WHERE userid = ?'';
var userModSql_Params = [0,userid];
client.query(userModSql,userModSql_Params,function (err, result) {
if(err){
console.log(''[DELETE ERROR] - '',err.message);
return;
}
});
for(var i in user) {
if(user[i].userid == userid) {
user[i].score = 0;
break;
}
}
};
//增
Insert = function(client,userid,pwd)
{
var userModSql = ''INSERT INTO user(userid,pwd,score) value(?,?,?)'';
var userModSql_Params = [userid,pwd,0];
client.query(userModSql,userModSql_Params,function (err, result) {
if(err){
console.log(''[DELETE ERROR] - '',err.message);
return;
}
});
user.add({userid:userid,pwd:pwd,score:0});
};
GetData(mysql);

node.js连接mysql与基本用法示例
本文实例讲述了node.js连接mysql与基本用法。分享给大家供大家参考,具体如下:
下载mysql模块
使用命令npm install mysql
下载mysql模块
mysql引入模块
var mysql = require("mysql");
创建连接池
使用createPool()
创建一个mysql连接池,传入一个表参数作为连接信息
var pool = mysql.createPool({
host:"127.0.0.1",
port:3306, //默认端口3306
database:"student", //需要连接的数据库
user:"root", //用户名
password:"123456", //密码
});
编写操作函数
使用连接池的方法getConnection()
获取连接方法
参数callback方法有三个参数错误信息err,SQL语句的结果sql_result,字段说明fields_desc
conn.query(sql,callback)
执行发送来的sql语句,然后调用callback
function mysql_exec(sql,callback){
//getConnection是从连接池获得mysql的连接通道
//异步获取,成功就会调用callback,conn就会返回一个
//与mysql通讯句柄
pool.getConnection(function(err,conn){
if(err){
if(callback){
callback(err,null,null);
}
return;
}
conn.query(sql,function(sql_err,sql_result,fields_desc){
if(sql_err){
if(callback){
callback(sql_err,null,null);
}
return;
}
//sql_result返回结果
//field_desc
if(callback){
callback(null,sql_result,fields_desc);
}
})
});
}
使用操作函数
sql操作基本都是异步进行的
mysql_exec("select * from mess",function(err,sql_result,fields_desc){
if(err){
console.log(err);
return;
}
if(sql_result){
console.log(sql_result); //此处会打印出sql返回结果
}
if(fields_desc){
console.log(fields_desc); //此处会打印出每个字段的说明
}
});
希望本文所述对大家nodejs程序设计有所帮助。
您可能感兴趣的文章:- nodejs连接mysql数据库简单封装示例-mysql模块
- 解决Node.js mysql客户端不支持认证协议引发的问题
- nodejs同步调用获取mysql数据时遇到的大坑
- node+express框架中连接使用mysql(经验总结)
- node+koa2+mysql+bootstrap搭建一个前端论坛
- nodejs连接mysql数据库及基本知识点详解
- nodejs简单访问及操作mysql数据库的方法示例
- node基于async/await对mysql进行封装

Node.js连接Mysql并进行数据库操作
2. [代码]创建测试表
3 |
CREATE TABLE `NodeSample`.`MyTable` ( |
4 |
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , |
5 |
`firstname` VARCHAR( 20 ) NOT NULL , |
6 |
`lastname` VARCHAR( 20 ) NOT NULL , |
7 |
`message` TEXT NOT NULL |
3. [代码]连接数据库
01 |
var sys = require(''sys''); |
03 |
var Client = require(''mysql'').Client; |
04 |
var client = new Client(); |
06 |
client.user = ''someuser''; |
07 |
client.password = ''password''; |
09 |
client.connect(function(error, results) { |
11 |
console.log(''Connection Error: '' + error.message); |
14 |
console.log(''Connected to MySQL''); |
4. [代码]打开数据库
01 |
ClientConnectionReady = function(client) |
03 |
client.query(''USE NodeSample'', function(error, results) { |
05 |
console.log(''ClientConnectionReady Error: '' + error.message); |
5. [代码]完成数据库操作程序
01 |
var sys = require(''sys''); |
03 |
var Client = require(''mysql'').Client; |
04 |
var client = new Client(); |
06 |
client.user = ''someuser''; |
07 |
client.password = ''password''; |
09 |
console.log(''Connecting to MySQL...''); |
11 |
client.connect(function(error, results) { |
13 |
console.log(''Connection Error: '' + error.message); |
16 |
console.log(''Connected to MySQL''); |
17 |
ClientConnectionReady(client); |
20 |
ClientConnectionReady = function(client) |
22 |
client.query(''USE NodeSample'', function(error, results) { |
24 |
console.log(''ClientConnectionReady Error: '' + error.message); |
32 |
ClientReady = function(client) |
34 |
var values = [''Chad'', ''Lung'', ''Hello World'']; |
35 |
client.query(''INSERT INTO MyTable SET firstname = ?, lastname = ? , message = ?'', values, |
36 |
function(error, results) { |
38 |
console.log("ClientReady Error: " + error.message); |
42 |
console.log(''Inserted: '' + results.affectedRows + '' row.''); |
43 |
console.log(''Id inserted: '' + results.insertId); |
49 |
GetData = function(client) |
52 |
''SELECT * FROM MyTable'', |
53 |
function selectCb(error, results, fields) { |
55 |
console.log(''GetData Error: '' + error.message); |
59 |
// Uncomment these if you want lots of feedback |
60 |
//console.log(''Results:''); |
61 |
//console.log(results); |
62 |
//console.log(''Field metadata:''); |
63 |
//console.log(fields); |
64 |
//console.log(sys.inspect(results)); |
66 |
if(results.length > 0) |
68 |
var firstResult = results[0]; |
69 |
console.log(''First Name: '' + firstResult[''firstname'']); |
70 |
console.log(''Last Name: '' + firstResult[''lastname'']); |
71 |
console.log(''Message: '' + firstResult[''message'']); |
76 |
console.log(''Connection closed''); |
今天关于nodejs连接mysql突然中断问题解决方案和nodejs连接mysql的历程的分享就到这里,希望大家有所收获,若想了解更多关于mybatis连接MySQL8出现的问题解决方法、node.js实现js连接mysql数据库、node.js连接mysql与基本用法示例、Node.js连接Mysql并进行数据库操作等相关知识,可以在本站进行查询。