我有一个表,其中有4列A,B,C,D。我将LWT用于此表中的所有创建/更新/删除操作。 A是我唯一的主键。 我的查询有点像这样:-
INSERT INTO xTable(A,B,D) Values ('123','','456') IF NOT EXISTS.
UPDATE INTO xTable SET B = '789' AND C = '' WHERE A = '123' IF EXISTS.
UPDATE INTO xTable SET B = '789' AND C = '456789' WHERE A = '123' IF EXISTS.
DELETE FROM xTable where A = '123' IF B = '789'.
在任何时间点,记录中都不可能有C值,但B为空。 但是当我从这张表中读取时,
select * from xTable where A = '123';
我分别得到A,C,D的正确值,即'123','789','456',但B为空。 同样,在执行上述任何查询时都没有收到错误。
此数据不一致的可能原因是什么?
Cassandra版本3.7。 我正在使用golang的gocql驱动程序来执行查询。
编辑-1
我对所有查询都使用QUORUM级别的一致性。这也是一个间歇性的问题。它很少发生,而且不容易重现