1

我正在使用 c# 测试向/从 InfluxDB v2 写入/查询时间序列数据。基本上,我几乎使用了 Data->“Load Data”->“Client Libraries”->C# 下 WebInterface 中提供的示例。

我可以写入数据库没有问题,但是当我尝试查询数据时,出现异常
'已添加具有相同键的项目。关键:结果'。

导致问题的电话是

    public async Task<List<InfluxDB.Client.Core.Flux.Domain.FluxTable>> QueryDB()
    {
        string bucket = "ABucket";

        var query = $"from(bucket:\"{bucket}\") |> range(start: -1m)";
        
        var tables = await client.GetQueryApi().QueryAsync(query, "MyOrganisation");

        // client is an instance of InfluxDBClient

        return tables;
    }

当它从上面的 QueryAsync 调用返回时,它会崩溃。

我已经阅读了其他帖子 1帖子 2有类似的问题,但是在浏览了这些并检查了我的代码之后,我没有看到任何同名的东西。我什至更改了一堆名称以确保没有重复。但问题并没有消失。

如果我删除了没有问题的异步调用,但是如果我这样做了,我将无法查询数据库。

有没有人用过InfluxDB提供的c#例子并成功了?

如果有任何帮助,这里是堆栈跟踪。

at InfluxDB.Client.Core.Internal.AbstractQueryClient.<>c.<.cctor>b__22_1(Exception e)
at InfluxDB.Client.Core.Internal.AbstractQueryClient.<Query>d__9.MoveNext()
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter.GetResult()
at InfluxDB.Client.QueryApi.<QueryAsync>d__7.MoveNext()
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
at MainApp.InfluxDBControl.<QueryDB>d__12.MoveNext() in D:\Test\TestProject\TestInfluxDB\InfluxDBControl.cs:line 104
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
at MainApp.MainTest.<CatchUpButton_Click>d__20.MoveNext() in D:\Test\TestProject\TestInfluxDB\MainAppForm.cs:line 171
4

1 回答 1

0

我今天遇到了同样的问题,并且能够通过创建一个新的 Bucket 来解决它。

查询我在设置过程中创建的 Bucket 时,发现里面有很多标签。其中,一个名为“result”的标签包含标签“compile_error”、“runtime_error”和“success”。我的猜测是这就是导致错误的原因。

我不太确定为什么会这样。我创建的新 Bucket 完全是空的,除了我放入其中的数据。所以我也不能告诉你,为什么系统似乎想要使用相同的标签来存储日志数据和查询结果,我也不能告诉你为什么新创建的 Bucket 中没有这些标签。

我不太确定这是否可以作为答案,但我发现评论有点冗长。

于 2021-06-22T09:50:00.520 回答