推特 阿里云技术文档正文

故障排查_时序数据库 InfluxDB® 版_时序时空数据库TSDB

admin 阿里云技术文档 2020-02-11 175 0
阿里云服务器优惠

故障排查

本页面包含一些常见的TSDB For InfluxDB®错误信息以及关于它们的描述,还包括常见的解决方案(如果适用的话)。

免责声明:本文档不是涵盖所有可能的TSDB For InfluxDB®错误的详细清单。

error: database name required

当包含SHOW的查询没有明确指定一个数据库时,错误database name required就会发生。指定数据库的方法包括:在SHOW查询中使用ON子句,在CLI中使用USE <database_name>,或者在HTTP API请求中使用参数db

相关的SHOW查询包括SHOW RETENTION POLICIESSHOW SERIESSHOW MEASUREMENTSSHOW TAG KEYSSHOW TAG VALUESSHOW FIELD KEYS

资源:文档Schema探索InfluxQL参考

error: max series per database exceeded: < >

当写入导致数据库中序列的数量超过每个数据库允许的最大序列数量时,错误max series per database exceeded就会发生。每个数据库允许的最大序列数量由购买的实例规格所决定。

< >内的信息展示了那些超出max-series-per-database限制的序列的measurement和tag set。

error parsing query: found < >, expected identifier at line < >, char < >

InfluxQL语法

当TSDB For InfluxDB®在查询中找不到预期的标识符时,错误expected identifier就会发生。标识符是连续查询名字、数据库名字、field key、measurement的名字、保留策略名字、subscription的名字、tag key和用户名。这个错误通常用于提醒您仔细检查您的查询语法。

示例

  1. > SELECT * FROM WHERE "blue" = true
  2. ERR: error parsing query: found WHERE, expected identifier at line 1, char 15

该查询在FROMWHERE之间缺少measurement的名字。

InfluxQL关键字

在某些情况下,当查询中某个标识符是InfluxQL关键字时,错误expected identifier就会发生。如果要查询也是InfluxQL关键字的标识符,请用双引号将标识符括起来。

示例

  1. > SELECT duration FROM runs
  2. ERR: error parsing query: found DURATION, expected identifier, string, number, bool at line 1, char 8

在查询中,field key duration是一个InfluxQL关键字。为了避免错误,请用双引号将duration括起来:

  1. > SELECT "duration" FROM runs

资源:文档InfluxQL参考

error parsing query: found < >, expected string at line < >, char < >

当TSDB For InfluxDB®在查询中找不到预期的字符串时,错误expected string就会发生。

error parsing query: mixing aggregate and non-aggregate queries is not supported

SELECT语句同时包含聚合函数和不使用聚合函数的field key或tag key时,错误mixing aggregate and non-aggregate就会发生。

聚合函数返回一个计算结果,对于没有被聚合的field或tag,没有明显的单个值可以返回。

示例

原始数据:
measurement peg有两个field(square and round)和一个tag(force):

  1. name: peg
  2. ---------
  3. time square round force
  4. 2016-10-07T18:50:00Z 2 8 1
  5. 2016-10-07T18:50:10Z 4 12 2
  6. 2016-10-07T18:50:20Z 6 14 4
  7. 2016-10-07T18:50:30Z 7 15 3

查询一:

  1. > SELECT mean("square"),"round" FROM "peg"
  2. ERR: error parsing query: mixing aggregate and non-aggregate queries is not supported

查询一包含一个聚合函数和一个单独的field。

mean("square")返回一个聚合值,这是measurement peg中的四个square值的平均值,但是从field round的四个非聚合的field value中,没有明显的单个值可以返回。

查询二:

  1. > SELECT mean("square"),"force" FROM "peg"
  2. ERR: error parsing query: mixing aggregate and non-aggregate queries is not supported

查询二包含一个聚合函数和一个单独的tag。

mean("square")返回一个聚合值,这是measurement peg中的四个square值的平均值,但是从tag force的四个非聚合的tag value中,没有明显的单个值可以返回。

资源:文档InfluxQL函数

invalid operation: time and *influxql.VarRef are not compatible

当在查询中用双引号把日期时间字符串括起来时,错误time and \*influxql.VarRef are not compatible就会发生。需要用单引号把日期时间字符串括起来。

示例
用双引号把日期时间字符串括起来:

  1. > SELECT "water_level" FROM "h2o_feet" WHERE "location" = 'santa_monica' AND time >= "2015-08-18T00:00:00Z" AND time <= "2015-08-18T00:12:00Z"
  2. ERR: invalid operation: time and *influxql.VarRef are not compatible

用单引号把日期时间字符串括起来:

  1. > SELECT "water_level" FROM "h2o_feet" WHERE "location" = 'santa_monica' AND time >= '2015-08-18T00:00:00Z' AND time <= '2015-08-18T00:12:00Z'
  2. name: h2o_feet
  3. time water_level
  4. ---- -----------
  5. 2015-08-18T00:00:00Z 2.064
  6. 2015-08-18T00:06:00Z 2.116
  7. 2015-08-18T00:12:00Z 2.028

资源:文档数据探索

unable to parse < >: bad timestamp

时间语法

当行协议包含不是UNIX时间戳格式的时间戳时,错误bad timestamp就会发生。

示例

  1. > INSERT pineapple value=1 '2015-08-18T23:00:00Z'
  2. ERR: {"error":"unable to parse 'pineapple value=1 '2015-08-18T23:00:00Z'': bad timestamp"}

上面的行协议使用了RFC3339格式的时间戳。为了避免错误,成功将数据点写入TSDB For InfluxDB®,将时间戳替换成UNIX时间戳:

  1. > INSERT pineapple,fresh=true value=1 1439938800000000000

行协议语法

在某些情况下,当行协议中有更通用的语法错误时,错误bad timestamp就会发生。

示例

写入一:

  1. > INSERT hens location=2 value=9
  2. ERR: {"error":"unable to parse 'hens location=2 value=9': bad timestamp"}

在写入一中的行协议使用空格将measurement hen和tag location=2分开,而不是用逗号。TSDB For InfluxDB®把field value=9当成了时间戳,所以返回错误。

为了避免错误,使用逗号(而不是空格)将measurement和tag分开:

  1. > INSERT hens,location=2 value=9

写入二:

  1. > INSERT cows,name=daisy milk_prod=3 happy=3
  2. ERR: {"error":"unable to parse 'cows,name=daisy milk_prod=3 happy=3': bad timestamp"}

在写入二中的行协议使用空格将field milk_prod=3和field happy=3分开,而不是用逗号。TSDB For InfluxDB®把field happy=3当成了时间戳,所以返回错误。

为了避免错误,使用逗号(而不是空格)将两个field分开:

  1. > INSERT cows,name=daisy milk_prod=3,happy=3

资源行协议教程行协议参考

unable to parse < >: time outside range

当行协议中的时间戳在TSDB For InfluxDB®的有效时间范围之外时,错误time outside range就会发生。最小的有效时间戳是-92233720368547758061677-09-21T00:12:43.145224194Z,最大的有效时间戳是92233720368547758062262-04-11T23:47:16.854775806Z

资源行协议教程行协议参考

write failed for shard < >: engine: cache maximum memory size exceeded

当写入速度过快,导致服务端cache大小短时间超过预设的门限时,错误cache maximum memory size exceeded就会发生。预设的门限由购买的实例规格决定。


InfluxDB® is a trademark registered by InfluxData, which is not affiliated with, and does not endorse, TSDB for InfluxDB®.

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

评论

-----