このトピックでは、Time Series Database (TSDB) for InfluxDB® の一般的なエラーメッセージと、対応する解決策について説明します。
"database name required" エラーメッセージへの対処
SHOW クエリでデータベースが指定されていない場合、database name required エラーメッセージが報告されます。データベースを指定するには、SHOW ステートメントで ON 句を使用するか、CLI で USE <database_name> ステートメントを使用するか、HTTP API リクエストで db パラメーターを使用します。
SHOW クエリには、SHOW RETENTION POLICIES、SHOW SERIES、SHOW MEASUREMENTS、SHOW TAG KEYS、SHOW TAG VALUES、SHOW FIELD KEYS ステートメントが含まれます。
"max series per database exceeded: < >" エラーメッセージへの対処
書き込みリクエスト中にデータベースあたりの最大系列数を超えた場合、max series per database exceeded: < > エラーメッセージが報告されます。データベースあたりの最大系列数は、インスタンスのインスタンスタイプによって決まります。
山括弧 (< >) に表示される情報は、max-series-per-database で指定された上限を超える系列のメジャーメントとタグセットを示しています。
"found < >, expected identifier at line < >, char < >" エラーメッセージへの対処
InfluxQL 構文
TSDB for InfluxDB® がクエリで予期される識別子を見つけられない場合、
found < >, expected identifier at line < >, char < >エラーメッセージが報告されます。識別子は、継続クエリ名、データベース名、フィールドキー、メジャーメント名、リテンションポリシー名、サブスクリプション名、タグキー、またはユーザー名です。このエラーメッセージは、クエリ構文を確認するように促します。例
> SELECT * FROM WHERE "blue"= true ERR: error parsing query: found WHERE, expected identifier at line 1, char 15上記のステートメントでは、
FROMとWHEREの間にメジャーメント名が欠落しています。InfluxQL キーワード
クエリの識別子の 1 つが InfluxQL キーワードである場合、
expected identifierエラーメッセージが報告されます。クエリの識別子が InfluxQL キーワードである場合は、識別子を二重引用符 (") で囲みます。例
> SELECT duration FROM runs ERR: error parsing query: found DURATION, expected identifier, string, number, bool at line 1, char 8上記のステートメントでは、
durationフィールドキーは InfluxQL キーワードです。このエラーを防ぐには、durationを二重引用符 (") で囲みます。> SELECT "duration" FROM runs
"found < >, expected string at line < >, char < >" エラーメッセージへの対処
TSDB for InfluxDB® がクエリで予期される文字列を見つけられない場合、found < >, expected string at line < >, char < > エラーメッセージが報告されます。
"mixing aggregate and non-aggregate queries is not supported" エラーメッセージへの対処
SELECT ステートメントに集計関数と集計されていないフィールドまたはタグキーの両方が含まれている場合、mixing aggregate and non-aggregate queries is not supported エラーメッセージが報告されます。
集計関数は、単一の集計値を返します。集計されていないフィールドまたはタグキーに対しては、単一の値を返すことができません。
例
生データ: peg メジャーメントには、square フィールドと round フィールド、および 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クエリ 1:
> SELECT mean("square"),"round" FROM "peg"
ERR: error parsing query: mixing aggregate and non-aggregate queries is not supported上記のステートメントには、集計関数とスタンドアロンフィールドが含まれています。
mean("square") 関数は、peg メジャーメントの square の 4 つの値の平均である単一の集計値を返します。ただし、集計されていない round フィールドの 4 つの値に対しては、単一の値を返すことができません。
クエリ 2:
> SELECT mean("square"),"force" FROM "peg"
ERR: error parsing query: mixing aggregate and non-aggregate queries is not supported上記のステートメントには、集計関数とスタンドアロンタグが含まれています。
mean("square") 関数は、peg メジャーメントの square の 4 つの値の平均である単一の集計値を返します。ただし、集計されていない force タグの 4 つの値に対しては、単一の値を返すことができません。
"time and *influxql.VarRef are not compatible" エラーメッセージへの対処
クエリで日付と時刻の文字列が二重引用符 (") で囲まれている場合、time and *influxql.VarRef are not compatible エラーメッセージが報告されます。日付と時刻の文字列を囲むには、一重引用符 (') を使用する必要があります。
例
日付と時刻の文字列を二重引用符 ('') で囲みます。
> 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日付と時刻の文字列を一重引用符 (') で囲みます。
> 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"bad timestamp" エラーメッセージへの対処
タイムスタンプ構文
Line protocol に UNIX 形式ではないタイムスタンプが含まれている場合、
bad timestampエラーメッセージが報告されます。例
> INSERT pineapple value=1'2015-08-18T23:00:00Z' ERR:{"error":"unable to parse 'pineapple value=1 '2015-08-18T23:00:00Z'': bad timestamp"}この例では、Line protocol は RFC 3339 形式のタイムスタンプを使用しています。このエラーを防ぐには、タイムスタンプを UNIX 形式に変更します。
> INSERT pineapple,fresh=true value=11439938800000000000Line protocol 構文
Line protocol に一般的な構文エラーが含まれている場合、
bad timestampエラーメッセージが報告されます。例
書き込みリクエスト 1:
> INSERT hens location=2 value=9 ERR:{"error":"unable to parse 'hens location=2 value=9': bad timestamp"}上記のステートメントでは、Line protocol は
henメジャーメントとlocation=2タグをカンマ (,) ではなくスペースで区切っています。その結果、TSDB for InfluxDB® はvalue=9フィールドをタイムスタンプと見なし、エラーメッセージを返します。このエラーを防ぐには、カンマ (,) を使用してメジャーメントとタグを区切ります。
> INSERT hens,location=2 value=9書き込みリクエスト 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"}上記のステートメントでは、Line protocol は
milk_prod=3フィールドとhappy=3フィールドをカンマ (,) ではなくスペースで区切っています。その結果、TSDB for InfluxDB® はhappy=3フィールドをタイムスタンプと見なし、エラーメッセージを返します。このエラーを防ぐには、カンマ (,) を使用して 2 つのフィールドを区切ります。
> INSERT cows,name=daisy milk_prod=3,happy=3
"time outside range" エラーメッセージへの対処
Line protocol のタイムスタンプが TSDB for InfluxDB® の有効な時間範囲外の場合、time outside range エラーメッセージが報告されます。
有効な最小タイムスタンプは -9223372036854775806 または 1677-09-21T00:12:43.145224194Z です。有効な最大タイムスタンプは 9223372036854775806 または 2262-04-11T23:47:16.854775806Z です。
"engine: cache maximum memory size exceeded" エラーメッセージへの対処
サーバーのキャッシュされたメモリサイズが短期間で事前設定されたしきい値を超えた場合、engine: cache maximum memory size exceeded エラーメッセージが報告されます。事前設定されたしきい値は、インスタンスのインスタンスタイプによって決まります。