Topik ini menjelaskan pesan kesalahan umum di Time Series Database (TSDB) untuk InfluxDB® dan solusi yang sesuai.
Menangani pesan kesalahan "database name required"
Jika tidak ada database yang ditentukan dalam kueri SHOW, akan muncul pesan kesalahan database name required. Untuk menentukan database, gunakan klausa ON dalam pernyataan SHOW, pernyataan USE <database_name> di CLI, atau parameter db dalam permintaan HTTP API.
Kueri SHOW mencakup pernyataan seperti SHOW RETENTION POLICIES, SHOW SERIES, SHOW MEASUREMENTS, SHOW TAG KEYS, SHOW TAG VALUES, dan SHOW FIELD KEYS.
Menangani pesan kesalahan "max series per database exceeded: < >"
Jika jumlah maksimum seri per database terlampaui selama permintaan penulisan, akan muncul pesan kesalahan max series per database exceeded: < >. Jumlah maksimum seri per database ditentukan oleh tipe instans dari instans Anda.
Informasi dalam tanda kurung sudut (< >) menunjukkan pengukuran dan set tag dari seri yang melebihi batas atas yang ditentukan oleh max-series-per-database.
Menangani pesan kesalahan "found < >, expected identifier at line < >, char < >"
-
Sintaksis InfluxQL
Jika TSDB For InfluxDB® tidak dapat menemukan pengenal yang diharapkan dalam kueri, akan muncul pesan kesalahan
found < >, expected identifier at line < >, char < >. Pengenal dapat berupa nama kueri kontinu, nama database, kunci bidang, nama pengukuran, nama kebijakan retensi, nama langganan, kunci tag, atau nama pengguna. Pesan kesalahan ini mengingatkan Anda untuk memeriksa sintaksis kueri Anda.Contoh
> SELECT * FROM WHERE "blue"= true ERR: error parsing query: found WHERE, expected identifier at line 1, char 15Dalam pernyataan sebelumnya, nama pengukuran hilang antara
FROMdanWHERE. -
Kata Kunci InfluxQL
Jika salah satu pengenal dalam kueri adalah kata kunci InfluxQL, akan muncul pesan kesalahan
expected identifier. Jika pengenal dalam kueri Anda adalah kata kunci InfluxQL, sertakan pengenal tersebut 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 pernyataan sebelumnya, kunci bidang
durationadalah kata kunci InfluxQL. Untuk mencegah kesalahan ini, sertakandurationdalam tanda kutip ganda (").> SELECT "duration" FROM runs
Menangani pesan kesalahan "found < >, expected string at line < >, char < >"
Jika TSDB For InfluxDB® tidak dapat menemukan string yang diharapkan dalam kueri, akan muncul pesan kesalahan found < >, expected string at line < >, char < >.
Menangani pesan kesalahan "mixing aggregate and non-aggregate queries is not supported"
Jika pernyataan SELECT mencakup fungsi agregat dan kunci bidang atau tag yang tidak diagregasi, akan muncul pesan kesalahan mixing aggregate and non-aggregate queries is not supported.
Fungsi agregat mengembalikan nilai agregat tunggal. Tidak ada nilai tunggal yang dapat dikembalikan untuk kunci bidang atau tag yang tidak diagregasi.
Contoh
Data Mentah: Pengukuran peg mencakup bidang square dan round serta 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
Kueri 1:
> SELECT mean("square"),"round" FROM "peg"
ERR: error parsing query: mixing aggregate and non-aggregate queries is not supported
Pernyataan sebelumnya mencakup fungsi agregat dan bidang mandiri.
Fungsi mean("square") mengembalikan nilai agregat tunggal, yaitu rata-rata dari empat nilai square dalam pengukuran peg. Namun, tidak ada nilai tunggal yang dapat dikembalikan untuk empat nilai bidang round yang tidak diagregasi.
Kueri 2:
> SELECT mean("square"),"force" FROM "peg"
ERR: error parsing query: mixing aggregate and non-aggregate queries is not supported
Pernyataan sebelumnya mencakup fungsi agregat dan tag mandiri.
Fungsi mean("square") mengembalikan nilai agregat tunggal, yaitu rata-rata dari empat nilai square dalam pengukuran peg. Namun, tidak ada nilai tunggal yang dapat dikembalikan untuk empat nilai tag force yang tidak diagregasi.
Menangani pesan kesalahan "time and *influxql.VarRef are not compatible"
Jika string tanggal dan waktu dilingkupi dengan tanda kutip ganda (") dalam kueri, akan muncul pesan kesalahan time and *influxql.VarRef are not compatible. Anda harus menggunakan tanda kutip tunggal (') untuk melingkupi string tanggal dan waktu.
Contoh
Lingkupi string tanggal dan waktu dengan 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 compatible
Lingkupi string tanggal dan waktu dengan 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.028
Menangani pesan kesalahan "bad timestamp"
-
Sintaksis Timestamp
Jika protokol baris mencakup timestamp yang tidak dalam format UNIX, akan muncul pesan kesalahan
bad 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"}Dalam contoh ini, protokol baris menggunakan timestamp dalam format RFC 3339. Untuk mencegah kesalahan ini, ubah timestamp ke format UNIX.
> INSERT pineapple,fresh=true value=11439938800000000000 -
Sintaksis Protokol Baris
Jika protokol baris mencakup kesalahan sintaksis umum, akan muncul pesan kesalahan
bad timestamp.Contoh
Permintaan Tulis 1:
> INSERT hens location=2 value=9 ERR:{"error":"unable to parse 'hens location=2 value=9': bad timestamp"}Dalam pernyataan sebelumnya, protokol baris memisahkan pengukuran
hendari taglocation=2dengan menggunakan spasi alih-alih koma (,). Akibatnya, TSDB For InfluxDB® menganggap bidangvalue=9sebagai timestamp dan mengembalikan pesan kesalahan.Untuk mencegah kesalahan ini, gunakan koma (,) untuk memisahkan pengukuran dari tag.
> INSERT hens,location=2 value=9Permintaan Tulis 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"}Dalam pernyataan sebelumnya, protokol baris memisahkan bidang
milk_prod=3dari bidanghappy=3dengan menggunakan spasi alih-alih koma (,). Akibatnya, TSDB For InfluxDB® menganggap bidanghappy=3sebagai timestamp dan mengembalikan pesan kesalahan.Untuk mencegah kesalahan ini, gunakan koma (,) untuk memisahkan dua bidang tersebut.
> INSERT cows,name=daisy milk_prod=3,happy=3
Menangani pesan kesalahan "time outside range"
Jika timestamp dalam protokol baris berada di luar rentang waktu valid TSDB For InfluxDB®, akan muncul pesan kesalahan time outside range.
Timestamp minimum yang valid adalah -9223372036854775806 atau 1677-09-21T00:12:43.145224194Z. Timestamp maksimum yang valid adalah 9223372036854775806 atau 2262-04-11T23:47:16.854775806Z.
Menangani pesan kesalahan "engine: cache maximum memory size exceeded"
Jika ukuran memori cache server melebihi ambang batas yang telah ditentukan dalam waktu singkat, akan muncul pesan kesalahan engine: cache maximum memory size exceeded. Ambang batas yang telah ditentukan ditentukan oleh tipe instans dari instans Anda.