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中很特殊。如果他们出现而没有绑定侦听器,会打印堆栈跟踪并且杀死你的进程。
|