在cassandra集群删除数据时(TRUNCATE keyspace.table),如果碰到报错: Cannot achieve consistency level ALL. 进行如下检查:
1. 进入cqlsh,检查现在的consistency
cqlsh> CONSISTENCY;
2. 如果当前的consistency不是ALL,设置为ALL,
cqlsh> CONSISTENCY ALL;
3. 执行数据删除命令
cqlsh> TRUNCATE keyspace.table;
4. 恢复原来的CONSISTENCY(假设原来为ONE);
cqlsh> CONSISTENCY ONE;
如果truncate的过程中发生如下错误:
TruncateError: <ErrorMessage code=1003 [Error during truncate] message="Error during truncate: Cannot achieve consistency level ALL">
检查cassandra的log(system.log)
INFO [SharedPool-Worker-4] 2017-08-13 11:04:37,860 StorageProxy.java:2118 - Cannot perform truncate, some hosts are down
可以看到是因为有host挂了,不能删数据。
数据删除时需要集群所有节点都在线,如果有节点挂了,需要从集群中移除,否则会报错。