2015-11-05 46 views
0

我正在使用gocql,但它应该没有什么不同。
你知道如何解决以下?:批处理条件不能跨越多个分区

A2B := gocql.NewBatch(gocql.LoggedBatch) 
stmtA2B := "INSERT INTO tableName (idA, idB) VALUES (?,?) IF NOT EXISTS" 

for index, id := range listOfids { 
    A2B.Query(stmtAB, "test_id_A", "test_id_B") // This works 
    A2B.Query(stmtAB, "test_id_B", "test_id_A") // When I add this I get err 
} 

err := session.ExecuteBatch(A2B) 

的错误信息是:

批与条件不能跨越多个分区 2015年11月5日19时30分04秒的http:恐慌服务xxxx:44647:批处理条件不能跨越多个分区

+0

你能后,你看到的错误讯息? – Aaron

回答

1

由于错误状态,批处理语句不能跨多个分区运行。

我假设idA是您的表的分区键。在这种情况下,您只能执行正在更新idA的值相同的行的语句。 例如下面的查询在同一个批处理语句中可以正常工作。

A2B.Query(stmtAB, "test_id_A", "val1") 
A2B.Query(stmtAB, "test_id_A", "val2") 
A2B.Query(stmtAB, "test_id_A", "val3") 

但并不是以下,因为test_id_B行是在不同的分区test_id_A

A2B.Query(stmtAB, "test_id_A", "val1") 
A2B.Query(stmtAB, "test_id_A", "val2") 
A2B.Query(stmtAB, "test_id_B", "val3")