我正在尝试使用 datastax 中的 nodejs 驱动程序将字段添加到 cassandra 2.1.2 中的用户定义类型。我ALTER TYPE
在 cqlsh 中添加了该字段。当我尝试添加包含 udt 和新字段值的行时,它会以空值插入,而不是我提供的值。我强烈怀疑这与集群缓存准备好的语句的方式有关。因为我记得读过准备好的语句是由查询的哈希索引的,所以我尝试更改查询中的一些空格以查看它是否有帮助。这实际上似乎有效,但只有一次。随后的插入导致错误:
message: 'Operation timed out - received only 0 responses.',
info: 'Represents an error message from the server',
code: 4352,
consistencies: 10,
received: 0,
blockFor: 1,
writeType: 'SIMPLE',
coordinator: '127.0.0.1:9042',
并且似乎没有添加新行..直到我重新启动cassandra,此时不仅我认为失败的插入出现,而且后续的插入也可以正常工作。这非常令人不安,但幸运的是我只在测试实例中这样做了。但是,我确实需要在生产中进行此更改,并且重新启动集群以添加单个字段并不是一个真正的选择。有没有更好的方法让集群驱逐缓存的准备好的语句?