满意答案

rxuihh

2017.05.20

采纳率:41%    等级:9

已帮助:66人

安装

$ npm install mysql

有关之前的0.9.x版本的信息, 请访问 v0.9分支。

有时我还会要求你从Github安装最新版以检查bug是否已修复。在这种情况下,请输入:

$ npm install mysqljs/mysql

引言

这是node.js的mysql驱动。它是用JavaScript编写的,不需要编译,完全遵循MIT许可协议。

下面是一个如何使用它的例子:

var mysql = require('mysql');

var connection = mysql.createConnection({

host : 'localhost',

user : 'me',

password : 'secret',

database : 'my_db'

});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function(err, rows, fields) {

if (err) throw err;

console.log('The solution is: ', rows[0].solution);

});

connection.end();

从这个例子中,你可以了解到以下几点:

对于一个连接,你所调用的每个方法都是按顺序排队并依次执行的。

使用end()关闭连接,以确保给mysql服务器发送退出(quit)包以前执行所有剩余的查询。

推荐的建立链接的一个方法:

var mysql = require('mysql');

var connection = mysql.createConnection({

host : 'example.org',

user : 'bob',

password : 'secret'

});

connection.connect(function(err) {

if (err) {

console.error('error connecting: ' + err.stack);

return;

}

console.log('connected as id ' + connection.threadId);

});

然后,我们可以通过建立一个连接来进行查询:

var mysql = require('mysql');

var connection = mysql.createConnection(...);

connection.query('SELECT 1', function(err, rows) {

// connected! (unless `err` is set)

});

以上二种方法都是正确且合适的。至于如何取舍,就要看你怎么去处理所遇到的错误了。不管哪种类型的错误,那都是致命的,我们需要去看所提示的具体的错误信息。

连接参数

在建立新连接时,可以设置以下参数:

host:连接的数据库地址。(默认:localhost)

port:连接地址对应的端口。(默认:3306)

localAddress: 源IP地址使用TCP连接。(可选)

socketPath:当主机和端口参数被忽略的时候,可以填写一个Unix的Socket地址。

user: mysql的连接用户名。

password: 对应用户的密码。

database: 所需要连接的数据库的名称。(可选)

charset: 连接的编码形式。这就是mysql中的整理。(例如:utf8_general_ci)如果被指定,则作为默认的整理排序规则。(默认:utf8_general_ci)

timezone:用来保存当前本地的时区。(默认:local)

connectTimeout: 设置在连接的时候,超过多久以后未响应则返回失败。(默认:10000)

stringifyObjects: stringify对象代替转换值。issue# 501。(默认:false)

insecureAuth:使用旧(不安全)的连接方式去连接MySQL。(默认:false)

typeCast: 确定列值是否需要转换为本地JavaScript类型。(默认:true)

queryFormat:自定义查询的方式。地址:Custom format.

supportBigNumbers: 如果你使用了BIGINT和DECIMAL格式的表列,那么需要开启这个参数来支持。(默认:false)只有当他们超过JavaScript所能表达的 最长的字节的时候,如果没有设置这个参数,则会将过长的数字作为字符串传递。否则,返回对象的长度。如果supportBigNumbers参数被忽略, 则这个参数也会被忽略。

dateStrings:一些日期类型(TIMESTAMP, DATETIME, DATE)会以Strings的类型返回,然后转换成JavaScript的日期对象。(默认:false)

debug:是否把连接情况打印到文件。(默认:false)

trace: 生成错误的堆栈跟踪,包括库入口的调用位置(“长堆栈的轨迹”)。一般会造成轻微的性能损失。(默认:true)

终止连接

终止连接的方法有两种。调用end()方法可以正常地终止一个连接:

connection.end(function(err) {

// 连接终止

});

这种方法将确保给MySQL服务器发送COM_QUIT包之前所有队列中的查询都会被执行。如果在发送COM_QUIT包之前发生了致命错误,那么会给回调函数传递一个err参数,但是不管怎样连接都会关闭。

另外一种终止连接的方法是调用destroy()方法。该方法会立即终止底层套接字(underlying socket)。另外,destroy()不会触发更多的事件和回调函数。

00分享举报

node 连接mysql 中间件_如何在node.js里连接和使用mysql相关推荐

  1. node.js api接口_如何在Node.js API客户端中正常处理故障

    node.js api接口 by Roger Jin 罗杰·金(Roger Jin) 如何在Node.js API客户端中正常处理故障 (How to gracefully handle failur ...

  2. node 单元测试_如何在Node中模拟对单元测试的请求

    node 单元测试 by Edo Rivai 由Edo Rivai 如何在Node中模拟对单元测试的请求 (How to mock requests for unit testing in Node) ...

  3. npm中node更新_如何在Node中管理NPM和功能时保持理智

    npm中node更新 by Ted Gross 泰德·格罗斯(Ted Gross) 如何在Node中管理NPM和功能时保持理智 (How to keep your sanity while manag ...

  4. mysql fa连接池中间件_小米开源数据库中间件gaea

    简介 Gaea是小米商城/系统组研发的基于 mysql 协议的 数据库 中间件,目前在小米商城大陆和海外得到广泛使用,包括订单.社区.活动等多个业务.Gaea支持分库分表.sql路由.读写分离.连接池 ...

  5. thinkphp mysql 中文_耗时5天解决thinkphp连接mysql中文乱码的问题

    坑大,或者不大,它就在那里,等着你进. 先前修改成熟的一个基于thinkphp3.1.2的后台框架,里面有我的autoCode,本来在新项目上不想再用这么落后的版本,但考虑到后台项目不对外使用,重点是 ...

  6. mac os mysql 命令_如何在Mac OS上安装“mysql”命令?

    通常命令是: /usr/local/mysql/bin/mysql -u root -p 这将提示您输入root密码(除非您更改密码,否则可能为空) 您还可以使用: /usr/local/mysql/ ...

  7. react js 添加样式_如何在React JS Application中添加图像?

    react js 添加样式 Hello! In this article, we will learn how to add images in React JS? I remember when I ...

  8. mysql接口测试_用python实现接口测试(四、操作MySQL)

    一.MySQL简介 使用Python进行MySQL的库主要有三个,Python-MySQL(更熟悉的名字可能是MySQLdb),PyMySQL和SQLAlchemy. Python-MySQL资格最老 ...

  9. 将image存入mysql数据库_有谁知道如何把一图片存放到mysql数据库中

    root@ytt:/var/lib/mysql-files# for i in `seq 1 100`; do cp 微信图片_20190711095019.jpg "$i".jp ...

  10. 进苹果商店显示无法连接服务器,苹果商店提示无法连接怎么回事_苹果商店打不开连接不上如何解决-win7之家...

    当我们要在苹果手机中安装软件的时候,都会通过苹果商店中进行下载安装,可是近日由用户在进入苹果商店的时候,却提示无法连接,打不开也连接不上,遇到这样的问题是怎么回事呢?针对这个情况,本文给大家整理了苹果 ...

最新文章

  1. 微软职位内部推荐-SW Engineer II for WinCE
  2. 第十二届蓝桥杯JavaB组省赛H题 杨辉三角形
  3. angular语言前端开发_web前端开发入门全套学习方法路径,兼职在家做网站也能月入上万...
  4. 什么是MSTP(多业务传输平台)?
  5. 在LaTex中引用图片失败,出现(??)怎么办
  6. 简单的Java服务器和客户端的通信
  7. STL中algorithm里的查找
  8. 领扣(LeetCode)七进制数 个人题解
  9. 常用制图工具Visio-ProcessOn
  10. Linux系统蓝牙WiFi抓包命令
  11. Linux驱动开发之触摸驱动
  12. 初级会计资格-初级会计实务-知识点总结大全
  13. js实现数字的千分化
  14. Matplotlib绘图:plt?plt.subplots?plt.subplot?
  15. 现货跌期货涨(现货大涨期货就大涨吗)
  16. docker 创建redis容器
  17. CDN,高防IP接入报错504是为什么。解答方案一。
  18. mysql迅_迅搜(xunsearch) - 开源免费中文全文搜索引擎|PHP全文检索|mysql全文检索|站内搜索...
  19. python常用函数库
  20. 3.1.13.fcntl函数介绍

热门文章

  1. windows时间设置
  2. PLSQL提交带有模板的报表的方法
  3. 一个研究生毕业以后的人生规划(ZT)
  4. Flutter开发:在Flutter Plugin中引入aar——本地maven法
  5. cat的实用技巧 cat>>/etc/profile<<EOF
  6. html5怎么联网,HTML5--离线web应用
  7. c ringbuffer 源码_Python Ring Buffer的实现
  8. php utc时间_datetime - 以PHP格式获取UTC时间
  9. mysql限制数据类型的长度_MySQL数据类型的长度
  10. php excel parser pro v4.2,PHP Excel Parser Pro v4.2怎么用