Node.js Cassandra nodejs DataStax驱动程序不会通过预处理语句执行返回新添加的列

Node.js Cassandra nodejs DataStax驱动程序不会通过预处理语句执行返回新添加的列,node.js,cassandra,prepared-statement,Node.js,Cassandra,Prepared Statement,在schema中添加一对列后,我想通过select*选择它们。相反,select*返回一组旧列,不返回新列 根据文档推荐,我使用{prepare:true}来平滑JavaScript浮动和Cassandra ints/bigints差异。我并不真正需要这里的prepared语句,它只是为了解决这个问题,我也不想为查询提示而烦恼 所以在第一次执行select*时,我有3列。在此之后,我向模式中添加了两列。如果与{prepare:true}一起使用,select*仍然返回3列,如果不使用它,则返回5

在schema中添加一对列后,我想通过select*选择它们。相反,select*返回一组旧列,不返回新列

根据文档推荐,我使用{prepare:true}来平滑JavaScript浮动和Cassandra ints/bigints差异。我并不真正需要这里的prepared语句,它只是为了解决这个问题,我也不想为查询提示而烦恼

所以在第一次执行select*时,我有3列。在此之后,我向模式中添加了两列。如果与{prepare:true}一起使用,select*仍然返回3列,如果不使用它,则返回5列

我想有一种方法来可靠地刷新这个缓存,或者让cassandra驱动程序在每次应用程序启动时准备语句


<>我不认为重新启动数据库集群是一种可靠的方式。

这实际上是在2.1.3中固定的Casdand中的一个问题。问题在于,在模式更新时,准备好的语句不会从Cassandra端的缓存中逐出。如果您运行的版本低于2.1.3,这可能是自上周2.1.3发布以来的版本,那么没有办法解决这个问题,除非您创建另一个单独的prepared语句,该语句与其他语句略有不同,比如额外的空格或其他导致单独的惟一语句的内容

当运行2.1.3并更改表模式时,C*将正确地从缓存中退出相关的准备语句,当驱动程序使用该语句发送另一个查询时,Cassandra将以“UNPREPARED”消息响应,这将促使nodejs驱动程序重新准备查询并为您重新发送请求

在Node.js驱动程序上,您可以:

您可以使用:client.metadata.clearPrepared
client.metadata.clearPrepared();