簡體   English   中英

使用 Knex.js 的批量插入錯誤:綁定消息提供 X 參數,但准備好的語句“”需要 Y

[英]Bulk Insert Error using Knex.js: bind message supplies X parameters, but prepared statement "" requires Y

當使用 Knex.js 對 PostgreSQL 11.2 做一個大的 INSERT 時,

await knex(myTable).insert(largeArray);

我們得到錯誤

綁定消息提供 47078 個參數,但准備語句“”需要 9353190

問題:有沒有一種方法可以在不使用綁定的情況下在 Knex.js 中進行大量插入? 或者我們可以更改 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()的實用程序 function 可以幫助完成此操作。 數據庫的語句大小/綁定數量有限。 Sequelize 可能在內部進行批處理,因為它無法覆蓋數據庫服務器施加的限制。

如果您不想使用 ORM,您可以嘗試使用objection.js ,它更像是一個位於 knex 之上的高級幫助程序庫,用於提供常用的東西,而不是真正的 ORM。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM