0

我正在运行其他人编写的 node.js 代码。有问题的部分如下:

 client.query('CREATE TABLE ABC (id INT(11) AUTO_INCREMENT PRIMARY KEY, stuff VARCHAR(255),  more INT(3))',

        function (error) {
            //Handle an error if it's not a table already exists error
            if(error && error.number != 1050) {
                throw (error);
            }
    });

每次我运行它,我都会收到这个错误:

progfile.js:251
                throw (error);
                       ^
Error: connect ECONNRESET
    at errnoException (net.js:776:11)
    at Object.afterConnect [as oncomplete] (net.js:767:19)

据我了解,该错误意味着数据库关闭了连接?我如何确认这一点,我在哪里可以找到更多信息?我需要帮助追踪它发生的原因以及如何防止它发生。

Node.js 代码在 WinXP 机器上运行,数据库在 CentOS VPS 上。

4

1 回答 1

0

实际问题很可能在您的代码中的其他地方,其影响只是显示在您显示的代码中。

特别是,请确保在回调有机会运行之前,您没有“陷入”关闭连接的问题。在您的示例中,您的回调所做的只是检查错误,这让我怀疑您在调用client.query. 由于 MySQL 客户端的异步特性,这不会起作用;您显示的调用之后的任何语句都将在实际数据库查询有机会运行之前执行。任何依赖于您的查询已被执行的东西都必须进入回调内部。

如果这不能立即使问题变得明显,请编辑您的问题以在您显示的代码之前和之后包含代码。

于 2012-08-05T01:08:44.590 回答