设为首页 加入收藏

TOP

nodemysql部分中文文档(三)
2015-07-24 11:54:00 来源: 作者: 【 】 浏览:16
Tags:nodemysql 部分 中文 文档
ows + ' rows'); })

获得连接ID

你可以使用threadId属性获取MySQL连接ID(“thread ID”)。

connection.connect(function(err) {
  if (err) throw err;
  console.log('connected as id ' + connection.threadId);
});

多语句查询

由于安全原因,默认是关闭的.
如果要用需要这样创建连接:

var connection = mysql.createConnection({multipleStatements: true});

打开之后,你可以执行多语句查询如下:

connection.query('SELECT 1; SELECT 2', function(err, results) {
  if (err) throw err;

  // `results` is an array with one element for every statement in the query:
  console.log(results[0]); // [{1: 1}]
  console.log(results[1]); // [{2: 2}]
});

此外,你还可以这样:

var query = connection.query('SELECT 1; SELECT 2');

query
  .on('fields', function(fields, index) {
    // the fields for the result rows that follow
  })
  .on('result', function(row, index) {
    // index refers to the statement this result belongs to (starts at 0)
  });

如果你的一个查询语句导致错误,由此产生 Error
err.index 属性就是你第几条语句出错
当发生错误时MySQL也将停止执行其余的语句。

错误处理

该模块自带了错误处理,为了写出健壮的应用,你应该仔细看。

通过本模块创建的所有错误是java script的Error对象实例
。他们有两个属性:

err.code: MySQL 错误码 (e.g.'ER_ACCESS_DENIED_ERROR'), node.js错误 (e.g. 'ECONNREFUSED') 或者内部错误 (e.g. 'PROTOCOL_CONNECTION_LOST').* err.fatal: 布尔值, 指出这个错误是否是终端连接对象。

Error: https://developer.mozilla.org/en/java script/Reference/Global_Objects/Error
MySQL server error: http://dev.mysql.com/doc/refman/5.5/en/error-messages-server.html

致命错误会挂起所有的回调。在下面的例子中,试图连接到一个无效端口时触发致命的错误。因此,错误传递到回调:

var connection = require('mysql').createConnection({
  port: 84943, // WRONG PORT
});

connection.connect(function(err) {
  console.log(err.code); // 'ECONNREFUSED'
  console.log(err.fatal); // true
});

connection.query('SELECT 1', function(err) {
  console.log(err.code); // 'ECONNREFUSED'
  console.log(err.fatal); // true
});

正常错误只返回给属于他们回调函数。所以在下面的例子中,只有第一个回调会接收错误,第二个查询的会出错:

connection.query('USE name_of_db_that_does_not_exist', function(err, rows) {
  console.log(err.code); // 'ER_BAD_DB_ERROR'
});

connection.query('SELECT 1', function(err, rows) {
  console.log(err); // null
  console.log(rows.length); // 1
});

如果一个致命的错误产生,没有一个待定的回调,或者当一个正常的错误产生而没有属于他的回调,错误会向连接对象发出error事件。下面的例子说明:

connection.on('error', function(err) {
  console.log(err.code); // 'ER_BAD_DB_ERROR'
});

connection.query('USE name_of_db_that_does_not_exist');

注:error事件在 node中很特殊。如果他们出现而没有绑定侦听器,会打印堆栈跟踪并且杀死你的进程。

首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇mysql连接慢的问题 下一篇MySQL优化之――视图

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Announcing October (2025-12-24 15:18:16)
·MySQL有什么推荐的学 (2025-12-24 15:18:13)
·到底应该用MySQL还是 (2025-12-24 15:18:11)
·进入Linux世界大门的 (2025-12-24 14:51:47)
·Download Linux | Li (2025-12-24 14:51:44)