我想从同一个文件中包含我的mysql连接(如果我需要更改sql密码或我不想在许多文件中更改的任何内容)。
这是我的mysql.js文件:
module.exports = require('mysql').createConnection(
{
host : 'localhost',
user : 'admin',
password : 'xxxxxxxx',
database : 'database'
}
);
我希望像这样使用:
var connection = require(__dirname + '/../../../mysql');
connection.connect();
.
.
.
我的问题是它只能工作一次。当我启动服务器时,我可以查询没有任何问题,但在第二个查询中,我在控制台中收到以下错误消息:
"Cannot enqueue Handshake after invoking quit."
有人知道为什么不工作吗?
答案 0 :(得分:0)
显然你不再需要在createConnection()之后调用connect(),如果你愿意,它将在你查询时处理。
来自文档:
但是,也可以通过调用a来隐式建立连接 查询:
var mysql = require('mysql'); var connection = mysql.createConnection(...);
connection.query('SELECT 1',function(err,rows){//已连接! (除非设置
err
)});取决于您的处理方式 错误,两种方法都可能是合适的。任何类型的连接错误 (握手或网络)被视为致命错误,请参阅错误 处理部分了解更多信息。
除此之外,你可能在调用同一连接上的end()之前调用connect(),你可能想要检查它。
答案 1 :(得分:0)
感谢您的帮助,但我找到了解决问题的方法。我刚刚在mysql.js文件中创建了变量,然后我将它们导出为:
var host = 'localhost';
module.exports.localhost = localhost;
我可以在另一个js文件中使用它:
var connection = require(__dirname + '/../../../mysql');
connection.localhost;
我在这篇文章中找到了它: http://openmymind.net/2012/2/3/Node-Require-and-Exports/