求助帖:链接MySQL提示Connection already released。
发布于 8 年前 作者 bykege 5088 次浏览 来自 问答

QQ图片20160113105657.jpg

登录的时候如果用户名密码错误就没事,如果正确就报错。代码如下: user.js: //根据用户名得到用户信息 User.getUserByUserName = function getUserNumByName(username, callback) {

    var getUserByUserName_Sql = "SELECT * FROM userinfo WHERE username = ?";

    connection.query(getUserByUserName_Sql, [username], function (err, result) {
        if (err) {
            console.log("getUserByUserName Error: " + err.message);
            return;
        }

        connection.release();

        console.log("invoked[getUserByUserName]");
        callback(err,result);
    });
};


login.js:
    User = require('../models/user.js'),
router.post('/', function(req, res) {
var userName = req.body['txtUserName'],
    userPwd = req.body['txtUserPwd'],
    isRem = req.body['chbRem'],
    md5 = crypto.createHash('md5');

User.getUserByUserName(userName, function (err, results) {

    if(results == '')
    {
        res.locals.error = '用户不存在';
        res.render('login',{title:TITLE_LOGIN});
        return;
    }

    userPwd = md5.update(userPwd).digest('hex');
    if(results[0].UserName != userName || results[0].UserPass != userPwd)
    {
        res.locals.error = '用户名或密码有误';
        res.render('login',{title:TITLE_LOGIN});
        console.log(1);
        return;
    }
    else
    {
        if(isRem)
        {
            res.cookie('islogin', userName, { maxAge: 60000 });
        }

        res.locals.username = userName;
        req.session.username = res.locals.username;
        console.log(req.session.username);
        res.redirect('/');
        return;
    }
});

});

5 回复

你每次都要重新申请connection才符合正确的设计逻辑。 给你个封装方法,不需要手动release

function once(sql,cb){
	pool.getConnection(function(err,con){
		if(!con || err){
			cb(err,null)
		}else{
			con.query(sql,function(err,result){
				con.release();
				cb(err,result);
			})
		}
	});
}

@MiguelValentine 谢谢你的回答,我刚学Node,有点儿看不懂,请问在node链接数据库这里有什么可以参考的资料吗

@bykege 参考node_modules/模块名/readme.md 一般都很全

@MiguelValentine 天啊,像无字天书一样 /难过

@MiguelValentine 原来是要用专业工具 学习了 谢谢你

回到顶部