Node.js 连接mysql数据库问题
问题描述
问题描述: 最近在玩node.js连接mysql数据库,也连接成功,可以增删改了。但是有一个问题,每当抛出异常时,我的程序自动停止???并且报以下错误:
events.js:160 throw er; // Unhandled ’error’ event ^Error: Connection lost: The server closed the connection. at Protocol.end (D:SoftWareZBJWORKSPACEWebStormWKnode-log-regnode_modulesmysqllibprotocolProtocol.js:109:13) at Socket.<anonymous> (D:SoftWareZBJWORKSPACEWebStormWKnode-log-regnode_modulesmysqllibConnection.js:109:28) at emitNone (events.js:91:20) at Socket.emit (events.js:185:7) at endReadableNT (_stream_readable.js:974:12) at _combinedTickCallback (internal/process/next_tick.js:74:11) at process._tickCallback (internal/process/next_tick.js:98:9)
很奇怪为什么自动停止程序?我的连接数据库程序如下:
var mysql = require(’mysql’);var db_config = { host: ’127.0.0.1’, port:’3306’, user: ’root’, password: ’root’, database: ’test’};function connectServer() { var client = mysql.createConnection(db_config); return client;}function selectFun(client, username, callback) { //console.log('查询参数:'+username); //client为一个mysql连接对象 client.query(’select * from user where name='’ + username + ’'’, function (err, results, fields) { // console.log('查询结果:'+results);if (err) throw err;callback(results); });}function insertFun(client, username, password, callback) { var usr = {name:username,pwd:password}; client.query(’insert into user set ?’, usr, function (err, result) {if (err) { console.log('error:' + err.message); return err;}callback(result); });}exports.connect = connectServer;exports.selectFun = selectFun;exports.insertFun = insertFun;
问题解答
回答1:不要在回调函数中抛出异常,需要使用nodejs的方式:
callback(e,result,...);回调函数的第一个参数为Error对象,如果没发生错误,传入null
相关文章:
1. docker start -a dockername 老是卡住,什么情况?2. java - 配置tomcat免安装版,无法启动 返回错误码43. java内存模型的happens-before语义顺序问题4. python运行后没有任何反馈要怎么排查5. linux - 阿里云服务器(centos)中svn同步web目录的问题?6. java - 并发操作下关于队列的疑问?7. 编程 - java 为什么没有静态方法接口,有没有哪门语言有静态方法接口。8. 从事游戏服务端开发(Java),需要具备哪些技术???9. java - 判断数据在数据库中是否已存在.10. web - nginx为什么上传了网页文件也无法访问?
