我知道题目有点宽泛,但是我试过很多不同错误的东西,所以我打算用这个空间来描述每一个错误。下面是datastax的python驱动程序中的一个模型:
class DIDSummary(Model):
__keyspace__ = 'processor_api'
did = columns.Text(required=True, primary_key=True, partition_key=True)
month = columns.DateTime(required=True, primary_key=True, partition_key=True)
direction = columns.Text(required=True)
duration = columns.Counter(required=True)
cost = columns.Counter(required=True)
但是当我尝试这个的时候:
^{pr2}$我得到这个错误:
code=2200 [Invalid query] message="Partition KEY part did cannot be restricted by IN relation (only the last part of the partition key can)"
我试了一下:
class DIDSummary(Model):
# ...
month = columns.DateTime(required=True, primary_key=True)
# ...
这导致了错误:
code=2200 [Invalid query] message="Clustering column "month" cannot be restricted by an IN relation"
我也试过了:
class DIDSummary(Model):
# ...
month = columns.DateTime(required=True, primary_key=True, index=True)
# ...
这给了我一个错误:
InvalidRequest: code=2200 [Invalid query] message="Secondary indexes are not supported on counter tables"
当我试图sync_table(DIDSummary)
最后,我试着这么做:
class DIDSummary(Model):
# ...
month = columns.DateTime(required=True, primary_key=True)
direction = columns.Text(required=True)
# ...
这甚至不允许我运行服务器,结果在日志中出现以下错误:
cassandra.cqlengine.models.ModelDefinitionException: counter models may not have data columns
任何关于我应该如何更好地设计这个以便我可以运行上面的命令的帮助,将不胜感激。谢谢!在
编辑:我还必须这样做:
didsummaries = DIDSummary.filter(did__in=dids, month=month)
这意味着did
必须是分区密钥的最后一部分。我可以为每个元素分配一个随机的uuid并根据主键和索引查找元素吗?这样行吗?我太迷路了。在
你也需要把方向作为主键。在
从Datastax文档中:
相关问题 更多 >
编程相关推荐