【问题标题】:Azure storage query does not return data if partition key contains an exclamation mark如果分区键包含感叹号,Azure 存储查询不返回数据
【发布时间】:2019-10-07 16:07:33
【问题描述】:

我存储了一些数据,其中分区键包含感叹号,当我对该分区键进行查询时,我得到了奇怪的结果。

我尝试了以下方法。假设分区键是 t!est

我已经尝试了以下查询,结果令人尊敬

PartitionKey eq 't!est' = Noting returned
PartitionKey gt 't!est' = Noting returned
PartitionKey ge 't!est' = Noting returned
PartitionKey lt 't!est' = Record returned (Along side others)
PartitionKey le 't!est' = Record returned (Along side others)

我原以为 equals 至少会检索到我的记录。有什么我不明白的吗?

测试:

  • SDK .Net 版本 7.2.1
  • SDK .Net 9.3.3 版
  • Microsoft Azure 存储资源管理器版本 1.8.1

【问题讨论】:

  • 您确定它是感叹号,而不是看起来像但具有不同 unicode 代码点的东西?但不确定是否存在这样的符号。您有什么方法可以检索正在使用的分区键以检查其中的实际内容吗?
  • @LasseVågsætherKarlsen 是的,我确实手动检索了它,我很确定它是一个感叹号,我什至用虚拟数据进行了测试并自己输入了感叹号,结果仍然相同
  • 非常有趣的观察。我能够重现这个问题。这是我注意到的。当我指定像PartitionKey eq 'te!st' 这样的查询时,我没有得到任何结果。但是,当我指定像 PartitionKey neq 'te!st' 这样的无效查询时,我显然会收到一条错误消息。有趣的是,在我的查询中,! 更改为 not,因此实际发送到存储的查询是 PartitionKey eq 'tenottest'。我用 Node SDK 试过了。让我也试试 .Net SDK。
  • @GauravMantri 我已经从 .Net SDK 和 azure storage explorer 中尝试过,它们的行为与您描述的相同。非常感谢您对此有所了解。
  • 由于某种原因,我无法使用 .Net SDK 重现此问题。您能否编辑您的问题并包含更多详细信息,例如 SDK 版本、您的代码等。我可以理解 Storage Explorer,因为它使用 Node SDK 并且存在问题。我在 GitHub 上为 Node SDK 打开了一个问题:github.com/Azure/azure-storage-node/issues/588

标签: c# .net azure encoding azure-storage


【解决方案1】:

正如GauravMantri 在他的评论中所说。这是转换 '!' 的 sdk 的问题。为“不”,因此查询将不匹配。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-05
    • 1970-01-01
    • 2014-07-27
    • 1970-01-01
    • 1970-01-01
    • 2017-09-30
    • 2015-08-03
    • 1970-01-01
    相关资源
    最近更新 更多