【发布时间】:2016-10-03 20:24:51
【问题描述】:
我正在使用 felixge/node-mysql。另外我正在使用 express-myconnection 来防止 mysql 超时,从而防止节点服务器被杀死。我正在做的是在 mysql 中记录活动。场景是我有一个文件上传功能,一旦文件上传,我正在对文件执行不同的操作。在处理的每个阶段,我都将这些活动记录在数据库中。如果文件很小,这可以正常工作。如果文件很大,比如 100 MB,则加载需要一些时间,因此在此期间 mysql 服务器重新连接并创建新连接,但日志记录代码仍使用旧引用。错误:致命错误后无法将查询排入队列。所以,我的问题是有没有一种方法可以使用新的连接引用而不是旧的连接引用。有一个单一的功能,其中有关文件活动的所有不同阶段都发生。任何帮助是极大的赞赏。谢谢
嗨@paul,如果你看到了要点链接,你可以看到我有 upload.on('begin', function (fileInfo, reqs, resp) { } 我记录了文件上传过程的活动开始。上传文件后,upload.on('end', function (fileInfo,request,response) { } 被触发。我也在此处记录一些活动。正如我在问题中所说,如果文件很大,则上传需要时间。同时创建了一个新的 MySql 连接,但“end”事件中的插入查询仍然引用旧的 myconnection。所以,我想知道在这种情况下如何使用新的 mysql 连接引用?我希望这更好地解释了这个场景。
【问题讨论】:
-
请显示一些代码。
-
请检查链接gist.github.com/anonymous/ac4310635d6087cc6fe98d2cc27e27d9 第一个插入在上传过程开始时起作用。但是第二次insert是在上传过程完成的时候才开始的。这里还是引用mysql进程的老引用。
-
我还是不明白你的问题。您应该为每个工作单元使用不同的连接。不要依赖在特定时间范围内发出您的事件。
-
嗨@paul,我已经解释了上面有问题的场景。请看一下。
-
对不起,这对我来说仍然没有意义。从您的要点来看,您似乎正在使用 express-myconnection 中的“池”选项。鉴于您每次要进行查询时(在开始和结束步骤中)都要求该中间件为您提供连接,您应该依靠它从其池中为您管理连接,而不用担心是否连接是否“相同”。