问题1
报错:Character array is missing “e” notation exponential mark.
java.lang.NumberFormatException: Character array is missing "e" notation exponential mark.
at java.base/java.math.BigDecimal.<init>(BigDecimal.java:578) ~[na:na]
at java.base/java.math.BigDecimal.<init>(BigDecimal.java:402) ~[na:na]
at java.base/java.math.BigDecimal.<init>(BigDecimal.java:835) ~[na:na]
at spring.controller.DataController.lambda$0(DataController.java:67) ~[classes/:na]
……
经过我不断的对比两份及以上的连接influxdb数据的代码,终于找到了原因:
/**
* * 查询 * @param command 查询语句 * @return
*/
public QueryResult query(String command) {
return influxDB.query(new Query(command, database));
}
代码应该为
/**
* * 查询 * @param command 查询语句 * @return
*/
public QueryResult query(String command) {
return influxDB.query(new Query(command, database), TimeUnit.MILLISECONDS);
}
问题2
influx数据库内明明存放有记录,但是查询结果为null。
经过输出原结果,我猜测问题出现在查询语句上
String queryCondition = " where eid= " + list.get(i);// 查询条件
String queryCmd = "SELECT time, eid, co2, formaldehyde FROM"
// 要指定从 RetentionPolicyName.measurement中查询指定数据,默认的策略可以不加;
// + 策略name + "." + measurement
+ " composition" // 表名
// 添加查询条件(注意查询条件选择tag值,选择field数值会严重拖慢查询速度)
+ queryCondition
// 查询结果需要按照时间排序
+ " ORDER BY time DESC"
// 添加分页查询条件
+ pageQuery;
又是一番修改,问题出在查询条件的缺少两个单引号。
String queryCondition = " where eid= '" + list.get(i) + "'";// 查询条件
String queryCmd = "SELECT time, eid, co2, formaldehyde FROM"
+ " composition"
+ queryCondition
+ " ORDER BY time DESC"
+ pageQuery;
输出原结果
// 开始查询
QueryResult queryResult = influxDB.query(queryCmd);
System.out.println(queryResult);