前言
MySQL是一款常用的开源数据库产品,通常也是免费数据库的首选。查了一下NPM列表,发现Nodejs有13库可以访问MySQL,felixge/node-mysql似乎是最受关注项目,我也决定尝试用一下。
要注意名字,”felixge/node-mysql”非”node-mysql”,安装部分会介绍这个小插曲!
目录
- node-mysql介绍
- 建立MySQL测试库
- node-mysql安装
- node-mysql使用
felixge/node-mysql是一个纯nodejs的用javascript实现的一个MySQL客户端程序。felixge/node-mysql封装了Nodejs对MySQL的基本操作,100% MIT公共许可证。
项目地址:https://github.com/felixge/node-mysql
本地创建MySQL测试库:nodejs
重新登陆MySQL
新建一个user表
我的系统环境
- win7 64bit
- Nodejs:v0.10.5
- Npm:1.2.19
- MySQL:Server version: 5.6.11 MySQL Community Server (GPL)
创建工程:nodejs-node-mysql
这里有一个小插曲
安装“node-mysql”后,打开package.json文件发现,这个项目地址是
从依赖关系可以看到,它依赖于mysql库,是对felixge/node-mysql的封装。
由于这个项目star是0,fork也是0. 所以,我也不准备花时间测试了,重新安装felixge/node-mysql的包。
重新安装node-mysql
这回就对了,继续下面的开发!
创建node程序启动文件:app.js
第一个测试
运行node
这样我们就让Nodejs连接上了MySQL。
下面我们要对node-mysql的API进行常用的测试。
- 表新删改查
- 连接池配置
- MySQL断线重连
- 连接池超时测试
1). 表新删改查
修改app.js
控制台输出:

由于node的异步的,上面是一个连续的操作,代码会被写的支离破碎。我们可以通过async库对上面代码进行封装,请参考文章:Nodejs异步流程控制Async
2). 连接池配置
增加文件:app-pooling.js
控制台输出:
3). MySQL断线重连
分别模拟3种错误
- 登陆密码错误
- 数据库宕机
- 数据库连接超时
新增文件:app-reconnect.js
a. 模拟密码错误
修改password: ‘nodejs11’
控制台输出。
b. 模拟数据库宕机
正常启动node,然后杀掉mysqld的进程。
控制台输出。
这个异常,直接导致node程序被杀死!
c. 模拟连接超时,PROTOCOL_CONNECTION_LOST
切换到root账户, 修改MySQL的wait_timeout参数,设置为10毫秒超时。
修改文件:app-reconnection.js,在最后增加代码
程序会每融15秒,做一次查询。
控制台输出
我们自己的程序捕获了“PROTOCOL_CONNECTION_LOST”异常,并自动的实现了数据库重连。
4). MySQL连接池的超时测试
针对wait_timeout问题,我们再对连接做一下测试。
修改app-pooling.js文件
控制台输出:
连接池,已经解决了自动重连的问题了,后面我们的开发,可以尽量使用pooling的方式。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/166749.html