【问题标题】:node-mysql multiple instances is failingnode-mysql 多个实例失败
【发布时间】:2014-02-21 07:46:09
【问题描述】:

例如在socket.io连接事件中handleServer就是回调函数

function handleServer(s)
{
    m = new mysql();
    m.Query("blabla",function(r)
    {
        console.log(r)
    });
    m.Close();
}

mysql 对象是:

m = require("mysql");

function Mysql()
{
    this.mysql = m.createConnection({ blablah });
    this.mysql.connect(function(err)
    {
        // blabla
    });
}

Mysql.prototype.Query = function(q, callback)
{
    this.mysql.query(q, function(err, v)
    {
        callback(v);
    })
}

在第一个函数调用(handleServer)中,查询被正确执行,但在连续调用中,这个失败抛出

"m 没有方法'createConnection'"

理论上不应该创建另一个连接?

【问题讨论】:

    标签: mysql node.js node-mysql


    【解决方案1】:

    不,您不需要每次都创建一个新实例。

    您的代码的问题是您对两个不同的对象使用相同的全局变量m

    在您的 mysql func 定义中,您将全局变量 m 定义为 mysql 模块,然后将全局 m 重新定义为 new mysql

    试试这个:

    var m = new mysql();
    

    【讨论】:

    • 哦,但是第一个代码在 mysql.js 脚本中,第二个代码在 sio.js 脚本中。脚本中的全局变量 m 会影响另一个脚本吗?
    • 哦,是的,这是真的。包含是继承的
    猜你喜欢
    • 2014-09-25
    • 2014-03-13
    • 1970-01-01
    • 2018-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-06
    • 1970-01-01
    相关资源
    最近更新 更多