问题描述
我无法在此代码中绑定参数:
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”字符串,但已传递了该参数。