![](/img/trans.png)
[英]postgress-node error: bind message supplies 1 parameters, but prepared statement "" requires 0
[英]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.