我在尝试为我的应用程序实现一些计数器时遇到了这种奇怪的行为。基本上,我做了一个这样的柜台:
CREATE TABLE stats_dev.log_counters (
date text PRIMARY KEY,
all counter
);
然后我还想计算一些特定类型的消息,所以在我的 Go 应用程序中,我 ALTER 表以添加我以前没有的列。
我的应用程序正在增长,我开始有 30 多个列(不应超过 50 个),当我想检索所有这些计数器时,结果中缺少一些列。
query := s.Query(`SELECT * FROM `+_apiCountersTable+` WHERE date IN ?`, dates)
res, err := query.Iter().SliceMap()
这让我返回了 34 列中的 30 之类的东西。虽然,当我在 CQLSH 上提出请求时:
cqlsh:stats_dev> SELECT * FROM api_counters WHERE date = 'total';
我得到了正确的完整结果。所以 :
- 这是否来自我的要求,应该有所不同?
- 那可能来自gocql驱动程序吗?
- 这种模式完全愚蠢吗?
我的临时解决方案是从system.schema_columns
表中 SELECT 列名和 strings.Join() 所有这些到我的 SELECT 查询...
非常感谢您的帮助。