Topik ini menjelaskan pesan error umum TSDB For InfluxDB® dan menyediakan solusinya.
Bagaimana menangani error "database name required"?
Error database name required terjadi ketika kueri yang mencakup SHOW tidak menentukan database. Untuk menentukan database, Anda dapat menggunakan klausa ON dalam kueri SHOW, perintah USE <database_name> di command-line interface (CLI), atau parameter db dalam permintaan HTTP API.
Kueri SHOW yang dapat menyebabkan error ini meliputi SHOW RETENTION POLICIES, SHOW SERIES, SHOW MEASUREMENTS, SHOW TAG KEYS, SHOW TAG VALUES, dan SHOW FIELD KEYS.
Bagaimana menangani error "max series per database exceeded: < >"?
Error max series per database exceeded terjadi ketika operasi write menyebabkan jumlah series dalam sebuah database melebihi batas maksimum yang diizinkan. Jumlah maksimum series per database ditentukan oleh tipe instans Anda.
Informasi dalam < > menunjukkan measurement dan tag set dari series yang melebihi batas max-series-per-database.
Bagaimana menangani error "found < >, expected identifier at line < >, char < >"?
Sintaksis InfluxQL
Error
expected identifierterjadi ketika TSDB For InfluxDB® tidak menemukan identifier yang diharapkan dalam suatu kueri. Identifier adalah nama untuk continuous query, database, field key, measurement, retention policy, subscription, tag key, dan username. Error ini biasanya menunjukkan adanya masalah pada sintaksis kueri Anda.Contoh:
> SELECT * FROM WHERE "blue"= true ERR: error parsing query: found WHERE, expected identifier at line 1, char 15Kueri ini kehilangan nama measurement antara
FROMdanWHERE.Kata kunci InfluxQL
Dalam beberapa kasus, error
expected identifierterjadi ketika identifier dalam kueri merupakan kata kunci InfluxQL. Untuk mengkueri identifier yang juga merupakan kata kunci InfluxQL, sertakan identifier tersebut dalam tanda kutip ganda.Error
expected identifierdapat terjadi ketika identifier dalam kueri merupakan kata kunci InfluxQL. Untuk mengkueri identifier semacam itu, sertakan dalam tanda kutip ganda.Contoh
> SELECT duration FROM runs ERR: error parsing query: found DURATION, expected identifier, string, number, bool at line 1, char 8Dalam kueri tersebut, field key
durationmerupakan kata kunci InfluxQL. Untuk menghindari error, sertakandurationdalam tanda kutip ganda:> SELECT "duration" FROM runs
Bagaimana menangani error "found < >, expected string at line < >, char < >"?
Error expected string terjadi ketika TSDB For InfluxDB® mengharapkan nilai string dalam kueri tetapi tidak menemukannya.
Bagaimana menangani error "mixing aggregate and non-aggregate queries is not supported"?
Error mixing aggregate and non-aggregate terjadi ketika pernyataan SELECT mencakup fungsi agregat sekaligus field key atau tag key yang tidak diagregasi.
Fungsi agregat mengembalikan satu hasil terhitung. Untuk field atau tag yang tidak diagregasi, tidak ada nilai tunggal yang jelas untuk dikembalikan.
Contoh
Data mentah: Measurement peg memiliki dua field (square dan round) dan satu 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:30Z7153Kueri 1:
> SELECT mean("square"),"round" FROM "peg"
ERR: error parsing query: mixing aggregate and non-aggregate queries is not supportedKueri 1 mencakup fungsi agregat dan field terpisah.
mean("square") mengembalikan nilai agregat, yaitu nilai rata-rata dari empat nilai square dalam measurement peg. Namun, tidak ada nilai tunggal yang jelas untuk dikembalikan dari empat nilai field round yang tidak diagregasi.
Kueri 2:
> SELECT mean("square"),"force" FROM "peg"
ERR: error parsing query: mixing aggregate and non-aggregate queries is not supportedKueri 2 mencakup fungsi agregat dan tag terpisah.
mean("square") mengembalikan nilai agregat, yaitu nilai rata-rata dari empat nilai square dalam measurement peg. Namun, tidak ada nilai tunggal yang jelas untuk dikembalikan dari empat nilai tag force yang tidak diagregasi.
Bagaimana menangani error "time and *influxql.VarRef are not compatible"?
Error time and \*influxql.VarRef are not compatible terjadi ketika Anda menyertakan string tanggal dan waktu dalam tanda kutip ganda dalam kueri. String tanggal dan waktu harus disertakan dalam tanda kutip tunggal.
Contoh
Menyertakan string tanggal dan waktu dalam tanda kutip ganda:
> 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 compatibleMenyertakan string tanggal dan waktu dalam tanda kutip tunggal:
> 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.028Bagaimana menangani error "bad timestamp"?
Sintaksis waktu
Error
bad timestampterjadi ketika line protocol mencakup stempel waktu yang tidak dalam format UNIX timestamp.Contoh
> 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 di atas menggunakan stempel waktu dalam format RFC3339. Untuk menghindari error dan berhasil menulis titik data ke TSDB For InfluxDB®, ganti stempel waktu tersebut dengan UNIX timestamp:
> INSERT pineapple,fresh=true value=11439938800000000000Sintaksis line protocol
Dalam beberapa kasus, error
bad timestampterjadi karena kesalahan sintaksis umum dalam line protocol.Contoh
Write 1:
> INSERT hens location=2 value=9 ERR:{"error":"unable to parse 'hens location=2 value=9': bad timestamp"}Pada Write 1, line protocol menggunakan spasi alih-alih koma untuk memisahkan measurement
hendan taglocation=2. TSDB For InfluxDB® menginterpretasikan fieldvalue=9sebagai stempel waktu dan mengembalikan error.Untuk menghindari error, gunakan koma alih-alih spasi untuk memisahkan measurement dan tag:
> INSERT hens,location=2 value=9Write 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"}Pada Write 2, line protocol menggunakan spasi alih-alih koma untuk memisahkan field
milk_prod=3danhappy=3. Akibatnya, TSDB For InfluxDB® menginterpretasikanhappy=3sebagai stempel waktu dan mengembalikan error.Untuk menghindari error, pisahkan kedua field tersebut dengan koma alih-alih spasi:
> INSERT cows,name=daisy milk_prod=3,happy=3
Bagaimana menangani error "time outside range"?
Error time outside range terjadi ketika stempel waktu dalam line protocol berada di luar rentang waktu valid untuk TSDB For InfluxDB®.
Stempel waktu valid minimum adalah -9223372036854775806 atau 1677-09-21T00:12:43.145224194Z, dan stempel waktu valid maksimum adalah 9223372036854775806 atau 2262-04-11T23:47:16.854775806Z.
Bagaimana menangani error "engine: cache maximum memory size exceeded"?
Error cache maximum memory size exceeded terjadi ketika kecepatan write yang tinggi menyebabkan ukuran cache sementara di sisi server melebihi ambang batas yang telah ditentukan. Ambang batas tersebut ditentukan oleh tipe instans Anda.