gpt4 book ai didi

javascript - 使用 Knex.js : bind message supplies X parameters, 时出现批量插入错误,但准备好的语句 ""需要 Y

转载 作者:行者123 更新时间:2023-12-02 21:47:39 25 4
gpt4 key购买 nike

当使用 Knex.js 对 PostgreSQL 11.2 进行大型 INSERT 时,

await knex(myTable).insert(largeArray);

我们收到错误

bind message supplies 47078 parameters, but prepared statement "" requires 9353190

问题:有没有办法在 Knex.js 中进行大量插入而不使用绑定(bind)?或者 PostgreSQL 中是否有一个参数我们可以更改以允许像这样的大插入?

我相信我已经使用 Sequelize.js ORM 执行类似大小的插入(其大小的 1/2)而没有出现此类错误,但不希望将 ORM 用于我们当前的目的。

使用 knex 0.20.9、Node.js 12.14.1、PostgreSQL 11.2、TimescaleDB 1.6.0、Ubuntu 18.04.3

最佳答案

您需要批量添加数据。 knex 中有一个名为 batchInsert() 的实用函数来帮助完成此操作。数据库的语句大小/绑定(bind)数量有限。 Sequelize 可能在内部进行批处理,因为它无法覆盖数据库服务器施加的限制。

如果您不想使用 ORM,您可以尝试 objection.js,它更像是 knex 之上的高级帮助程序库,用于提供常用的东西,而不是真正的 ORM。

关于javascript - 使用 Knex.js : bind message supplies X parameters, 时出现批量插入错误,但准备好的语句 ""需要 Y,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60217265/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com