尝试使用 voltQueueSQLExperimental 运行 一个临时插入查询时出错

Error while trying to run an andhoc insert query using voltQueueSQLExperimental

尝试使用 voltQueueSQLExperimental() 函数在 volt db 中执行动态插入查询时出现错误。 SQL 很好,因为我 运行 它单独在 volt web studio 上。错误如下:

Error: VOLTDB ERROR: USER ABORT Attempted to queue DML adhoc sql 'insert into volt_temp_constraints (asset_id,config_id,session_id,sam_id) values (12,13,'abc',12)' from read only procedure at procedures.testPrcUpdateConstraint.run(testPrcUpdateConstraint.java:155)

请注意,生成的 SQL 是动态的和临时的,不能事先静态生成。

文档不是他们的强项...;),但我可以重现您的错误。

正如我所见,VoltDB 将已编译的过程标记为读写或只读。从 here 可以推断出。不幸的是,除了将 INSERT/UPDTE/UPSERT SQLStatement 创建为对象 属性 并且根本不使用它之外,目前似乎没有其他解决方法。

也许您可以联系其中一位开发人员来为此添加一些反驳的方法。

顺便说一下,异常可以在这里找到:https://github.com/VoltDB/voltdb/blob/master/src/frontend/org/voltdb/ProcedureRunner.java 第 620 行