Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – Cassandra nodejs DataStax驱动程序不通过预准备语句执行返回新添加的列大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在架构中添加一对列后,我想通过SELEct *选择它们.而是选择*返回旧的列集而不是新的列.

通过文档推荐,我使用{prepare:truE}来平滑JavaScript浮点数和Cassandra ints / bigints的区别(我真的不需要这里准备好的语句,它只是解决这个ResponseError : Expected 4 or 0 byte int问题,我也不想用查询提示打扰自己).

所以在第一次执行SELEct *时我有3列.在此之后,我向架构添加了2列.如果与{prepare:truE}一起使用,则SELEct *仍返回3列,如果没有它,则返回5列.

我希望有一种方法可靠地刷新此缓存或在每个应用程序启动时生成Cassandra驱动程序准备语句.

我不认为重新启动数据库集群是一种可靠的方法.

解决方法

这实际上是Cassandra中的一个问题,已在2.1.3( CASSANDRA-7910)中修复.问题是在架构更新时,准备好的语句不会从Cassandra端的缓存中逐出.如果您运行的版本低于2.1.3(这可能是自上周发布的2.1.3以来),除非您创建另一个稍有不同的预备语句(如额外的),否则实际上无法解决此问题空格或某些东西,以引起一个单独的独特声明).

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

在Node.js驱动程序上,您可以programatically clear the prepared statement metadata

client.Metadata.clearPrepared();

大佬总结

以上是大佬教程为你收集整理的node.js – Cassandra nodejs DataStax驱动程序不通过预准备语句执行返回新添加的列全部内容,希望文章能够帮你解决node.js – Cassandra nodejs DataStax驱动程序不通过预准备语句执行返回新添加的列所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。