连 MySQL 数据库
官方的扩展:
- https://github.com/mysqljs/mysql
- https://www.npmjs.com/package/mysql 坏处是使用的是回调,要自己封一下做成异步函数。
还有个 node-mysql。
注意点
- query() 的结果是个 RowDataPacket 对象。
- 一定要配 Error Handler。没配的话,有报错时会提示:
参考:https://www.npmjs.com/package/mysql#error-handling
throw er; // Unhandled 'error' event
解决问题
Error: Cannot enqueue Handshake after invoking quit.
是因为断开 mysql 连接时,connection 还有任务在执行。所以,一定要等查询结束后再断开连接。
connection.query(
'sql',
function() {
// 一定要等查询结束后再断开连接
// 不能放到 connection.query() 同级,因为查询是异步的
connection.end();
}
);
Error: Cannot enqueue Query after invoking quit
当执行 connection.end() 以后,下一次再要连接数据库,必须重新 mysql.createConnection()。