避免 Node.js 中 EPIPE 错误的最大查询长度

zav*_*avg 6 bulkinsert load-data-infile node.js node-mysql

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

尽管这里描述了如何使用大型 INSERT 查询向数据库添加 500,000 条记录,但我的脚本因数据量更小而失败,并出现以下错误:

{ [Error: write EPIPE] code: 'EPIPE', errno: 'EPIPE', syscall:
'write', fatal: true }
Run Code Online (Sandbox Code Playgroud)

我认为这个错误在某种程度上与mysql-node 的 github Load data infile failed with EPIPE for large files中的问题#359有关,该问题自创建以来的最后 5 个月内尚未分配给某人。

那么保证交付的查询的实际大小是多少?

tre*_*mby 6

我刚才遇到了这个问题,结果我正在与之交谈的 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-走了/

另请参阅此 SO 答案以查看该选项在您的特定数据库上设置的内容:https : //stackoverflow.com/a/5688506/496046