我使用voltdb-5.0.2并启动数据库作为voltdb创建
我已经在voltdb.The过程中从java类加载了一个过程-- tableName、columnName和整数值。
这是sqlcmd行上的错误-当我将过程调用为- exec CheckDeleteProcedure arg1(NewTable) arg2 arg3时。
checkdel.CheckDeleteProcedure.run(CheckDeleteProcedure.java:56)上的只读过程中的VOLTDB错误:用户中止尝试将DML临时删除从NewTable那里删除<=?
发布于 2015-03-18 16:08:32
谢谢你增加了这个细节。
voltQueueExperimental()方法是一个不受支持的实验性特性。
该过程在编译时被归类为只读,因为它不包含任何涉及写入的编译时常量SQLStmt对象。在运行时,您将得到此错误,因为只读过程不允许执行任何写入操作。涉及写入的过程处理方式不同(两阶段提交等)。
您可以从客户端接口将此DELETE语句作为Ad查询运行。
另一个选项是为每个表声明单独的SQLStmt对象,如果您希望这个过程处理的表数量不多。就使SQLStmt的编译时常量而言,这是可以的:
final String sql1 = "DELETE FROM ";
final String sql2 = " WHERE col1 <= ?;";
final SQLStmt qry1 = new SQLStmt(sql1 + "EMPLOYEE" + sql2);
final SQLStmt qry2 = new SQLStmt(sql1 + "DEPT" + sql2);我也要提醒你,不要一次删除许多记录。我写了一个博客帖子来讨论这个话题。
https://stackoverflow.com/questions/29099212
复制相似问题