我想使用该方法将行插入到 SQLite3 表中knex.raw
。不幸的是,我收到“SQLITE_RANGE”错误,这使我的测试失败。我已经通过以下方式验证了传递给原始查询的绑定:
- 他们尊重 INSERT 语句的顺序
- 他们尊重指定的列类型
- 他们尊重原始查询中请求的绑定数量
除此之外,我在网上查看过,但找不到解决我问题的方法。以下是尝试的操作的详细信息:
- 引擎:sqlite3 ^3.1.13
- SQL 客户端:knex ^0.14.4
- 环境:电子^1.7.11
错误:
SQLITE_RANGE: bind or column index out of range errno: 25, code: 'SQLITE_RANGE'
表定义:
-- --------------------------------------------------------
--
-- Table structure for table `ds13odba`
--
CREATE TABLE IF NOT EXISTS `ds13odba` (
`SURGERY_CODE` VARCHAR(6) ,
`TYPE` VARCHAR(1) ,
`FP59STALIB` VARCHAR(6) ,
`ID` INT UNSIGNED NOT NULL ,
`createdAt` DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL,
`updatedAt` DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL
);
-- --------------------------------------------------------
*注意这里定义的列类型是亲和类型,即MySQL类型。这些在 SQLite3 中有效,并且由引擎转换和优化为它们在 SQLite3 中的等效项。
询问:
INSERT INTO `ds13odba` (FP59STALIB, ID, SURGERY_CODE, TYPE) VALUES (?,?,?,?);
INSERT INTO `ds13odba` (FP59STALIB, ID, SURGERY_CODE, TYPE) VALUES (?,?,?,?);
INSERT INTO `ds13odba` (FP59STALIB, ID, SURGERY_CODE, TYPE) VALUES (?,?,?,?);
绑定:
[
'047202', 1, '000001', 'D',
'047203', 2, '000002', 'D',
'047204', 3, '000003', 'D'
]
调用代码:
await knex.raw(...convertToInsertSQL(records));
解决为:
await knex.raw(insertStatements.join('\n'), bindings);
你能帮我解决这个问题吗?
干杯