如何使用influxdb-java绑定查询中的参数

问题描述

我无法在此代码中绑定参数:

import org.influxdb.InfluxDB;
import org.influxdb.InfluxDBFactory;
import org.influxdb.dto.BoundParameterQuery;
import org.influxdb.dto.Query;
import org.influxdb.dto.QueryResult;

public class BindTest {
    public static void main(String[] args) {
        InfluxDB influxDB = InfluxDBFactory.connect("http://127.0.0.1:8086");
        String s = "SELECT LAST(*) FROM batch_assembly_monitoring WHERE last_batch_start = $lbs";
        Query query = BoundParameterQuery.QueryBuilder.newQuery(s)
                .bind("lbs",234567890)
                .create();
        System.out.println(query.getCommand());
        QueryResult result = influxDB.query(query);
    }
}

我在stdout上获得的输出

从batch_assembly_monitoring中选择LAST(*),在哪里last_batch_start = $ lbs

并且InfluxDB日志也包含以下内容

[httpd] 172.17.0.1--[24 / Sep / 2020:12:40:29 +0000]“ / query?params =%7B%22lbs%22%3A234567890%7D&q = SELECT + LAST%28%2A%29 + FROM + batch_assembly_monitoring + WHERE + last_batch_start +%3D +%24lbs HTTP / 1.1“ 200 89”-“” okhttp / 4.8.1“ 20fe610d-fe63-11ea-81ba-0242ac110002 271

似乎绑定参数未绑定,并且查询中使用占位符字符串代替值234567890。

我怎么了?

解决方法

问题是我在连接后没有设置数据库:

influxDB.setDatabase("my_database");

此后,它开始工作。 InfluxDB日志仍然不包含绑定参数,仅包含“ lbs”字符串,但已传递了该参数。