Este tópico descreve mensagens de erro comuns do TSDB For InfluxDB® e apresenta as respectivas soluções.
Como resolver o erro "database name required"?
O erro database name required ocorre quando uma consulta com SHOW não especifica um banco de dados. Para especificá-lo, utilize a cláusula ON na consulta SHOW, execute USE <database_name> na interface de linha de comando (CLI) ou defina o parâmetro db em uma solicitação de API HTTP.
As consultas SHOW que podem gerar esse erro incluem SHOW RETENTION POLICIES, SHOW SERIES, SHOW MEASUREMENTS, SHOW TAG KEYS, SHOW TAG VALUES e SHOW FIELD KEYS.
Como resolver o erro "max series per database exceeded: < >"?
O erro max series per database exceeded ocorre quando uma operação de escrita faz o número de séries em um banco de dados ultrapassar o limite máximo permitido. O tipo da instância determina a quantidade máxima de séries por banco de dados.
As informações entre < > indicam a measurement e o conjunto de tags da série que excedeu o limite max-series-per-database.
Como resolver o erro "found < >, expected identifier at line < >, char < >"?
-
Sintaxe do InfluxQL
O erro
expected identifiersurge quando o TSDB For InfluxDB® não encontra um identificador esperado na consulta. Identificadores são nomes de continuous queries, bancos de dados, field keys, measurements, retention policies, subscriptions, tag keys e nomes de usuário. Geralmente, esse erro indica problemas na sintaxe da consulta.Exemplo:
> SELECT * FROM WHERE "blue"= true ERR: error parsing query: found WHERE, expected identifier at line 1, char 15Nesta consulta, falta o nome da measurement entre
FROMeWHERE. -
Palavras-chave do InfluxQL
Em alguns casos, o erro
expected identifierocorre quando um identificador na consulta é também uma palavra-chave do InfluxQL. Para consultar um identificador que seja palavra-chave do InfluxQL, coloque-o entre aspas duplas.Esse erro também pode acontecer se o identificador for uma palavra-chave reservada do InfluxQL. Nesse cenário, envolva o identificador com aspas duplas para executar a consulta corretamente.
Exemplo
> SELECT duration FROM runs ERR: error parsing query: found DURATION, expected identifier, string, number, bool at line 1, char 8Na consulta acima, a field key
durationé uma palavra-chave do InfluxQL. Para evitar o erro, coloquedurationentre aspas duplas:> SELECT "duration" FROM runs
Como resolver o erro "found < >, expected string at line < >, char < >"?
O erro expected string aparece quando o TSDB For InfluxDB® espera um valor do tipo string na consulta, mas não o encontra.
Como resolver o erro "mixing aggregate and non-aggregate queries is not supported"?
O erro mixing aggregate and non-aggregate ocorre quando uma instrução SELECT inclui simultaneamente uma função de agregação e uma field key ou tag key não agregada.
Uma função de agregação retorna um único resultado calculado. Para campos ou tags não agregados, não existe um valor único e óbvio a ser retornado.
Exemplo
Dados brutos: A measurement peg possui dois campos (square e round) e uma tag (force):
name: peg
---------
time square round force
2016-10-07T18:50:00Z281
2016-10-07T18:50:10Z4122
2016-10-07T18:50:20Z6144
2016-10-07T18:50:30Z7153
Consulta 1:
> SELECT mean("square"),"round" FROM "peg"
ERR: error parsing query: mixing aggregate and non-aggregate queries is not supported
A Consulta 1 combina uma função de agregação com um campo separado.
A expressão mean("square") retorna um valor agregado correspondente à média dos quatro valores de square na measurement peg. No entanto, não há um valor único e evidente para retornar referente aos quatro valores não agregados do campo round.
Consulta 2:
> SELECT mean("square"),"force" FROM "peg"
ERR: error parsing query: mixing aggregate and non-aggregate queries is not supported
A Consulta 2 mistura uma função de agregação com uma tag separada.
Embora mean("square") retorne a média dos quatro valores de square na measurement peg, o sistema não consegue determinar um valor único para os quatro valores não agregados da tag force.
Como resolver o erro "time and *influxql.VarRef are not compatible"?
O erro time and \*influxql.VarRef are not compatible acontece ao colocar uma string de data e hora entre aspas duplas em uma consulta. Strings de data e hora devem obrigatoriamente estar entre aspas simples.
Exemplo
Uso incorreto de aspas duplas em uma string de data e hora:
> SELECT "water_level" FROM "h2o_feet" WHERE "location"='santa_monica' AND time >="2015-08-18T00:00:00Z" AND time <="2015-08-18T00:12:00Z"
ERR: invalid operation: time and *influxql.VarRef are not compatible
Uso correto de aspas simples em uma string de data e hora:
> SELECT "water_level" FROM "h2o_feet" WHERE "location"='santa_monica' AND time >='2015-08-18T00:00:00Z' AND time <='2015-08-18T00:12:00Z'
name: h2o_feet
time water_level
---------------
2015-08-18T00:00:00Z2.064
2015-08-18T00:06:00Z2.116
2015-08-18T00:12:00Z2.028
Como resolver o erro "bad timestamp"?
-
Sintaxe de tempo
O erro
bad timestampocorre quando o line protocol contém um timestamp fora do formato UNIX timestamp.Exemplo
> INSERT pineapple value=1'2015-08-18T23:00:00Z' ERR:{"error":"unable to parse 'pineapple value=1 '2015-08-18T23:00:00Z'': bad timestamp"}O line protocol anterior utiliza um timestamp no formato RFC3339. Para evitar o erro e gravar o ponto de dados com sucesso no TSDB For InfluxDB®, substitua o timestamp por um UNIX timestamp:
> INSERT pineapple,fresh=true value=11439938800000000000 -
Sintaxe do line protocol
Eventualmente, o erro
bad timestampindica um erro de sintaxe mais genérico no line protocol.Exemplo
Escrita 1:
> INSERT hens location=2 value=9 ERR:{"error":"unable to parse 'hens location=2 value=9': bad timestamp"}Na Escrita 1, o line protocol usa um espaço em vez de vírgula para separar a measurement
henda taglocation=2. O TSDB For InfluxDB® interpreta o campovalue=9como timestamp e retorna um erro.Para evitar esse problema, use vírgula em vez de espaço para separar a measurement da tag:
> INSERT hens,location=2 value=9Escrita 2:
> INSERT cows,name=daisy milk_prod=3 happy=3 ERR:{"error":"unable to parse 'cows,name=daisy milk_prod=3 happy=3': bad timestamp"}Na Escrita 2, o line protocol emprega um espaço no lugar da vírgula para separar os campos
milk_prod=3ehappy=3. Consequentemente, o TSDB For InfluxDB® interpretahappy=3como timestamp e gera um erro.Corrija a sintaxe separando os dois campos com vírgula em vez de espaço:
> INSERT cows,name=daisy milk_prod=3,happy=3
Como resolver o erro "time outside range"?
O erro time outside range ocorre quando o timestamp no line protocol está fora do intervalo de tempo válido para o TSDB For InfluxDB®.
O timestamp mínimo válido é -9223372036854775806 ou 1677-09-21T00:12:43.145224194Z, enquanto o máximo é 9223372036854775806 ou 2262-04-11T23:47:16.854775806Z.
Como resolver o erro "engine: cache maximum memory size exceeded"?
O erro cache maximum memory size exceeded acontece quando uma alta velocidade de escrita faz o tamanho do cache no servidor exceder temporariamente o limiar predefinido. O tipo da instância determina esse limiar.