最大查询长度,以避免node.js中出现EPIPE错误

时间:2013-05-10 21:23:58

标签: node.js node-mysql

我正在使用felixge/node-mysql模块与node.js中的MySQL数据库进行交互。我在一个INSERT请求中向数据库中插入大量数据时遇到了问题。

尽管here描述了如何使用large向数据库添加500'000条记录 INSERT查询,我的脚本失败,出现以下错误,包含更少量的数据

{ [Error: write EPIPE] code: 'EPIPE', errno: 'EPIPE', syscall: 'write', fatal: true }

我认为这个错误与mysql-node的github Load data infile fails with EPIPE for large files中的问题#359有某种联系,自创建以来最后5个月未分配给某人。

那么帽子是实际的查询大小,保证交付?

2 个答案:

答案 0 :(得分:4)

我刚才遇到了这个问题,事实证明我正在谈论的Mysql服务器(它在Amazon RDS上)的max_allowed_packet选项设置得非常低。越来越多的人为我解决了这个问题。

我通过命令行上的mysql运行(非常长的)查询,并搜索我收到的错误消息,得到了我需要的线索。然后,我从此处获得了有关在Amazon RDS上增加选项的说明:http://dev.n0ise.net/2012/10/amazon-rds-error-2006-hy000-at-line-xxx-mysql-server-has-gone-away/

另请参阅此SO答案,了解您的特定数据库上设置了哪个选项:https://stackoverflow.com/a/5688506/496046

答案 1 :(得分:2)

我也遇到过这个问题。

我试过这个库:https://github.com/sidorares/node-mysql2

这是felixge的mysql驱动程序的替代品,我没有看到使用它的EPIPE错误。