All Products
Search
Document Center

Hologres:FAQ tentang Pernyataan SQL Hologres

Last Updated:Jul 07, 2026

Topik ini mencantumkan kode kesalahan SQL Hologres umum beserta penyebab dan solusinya.

HG_ERRCODE_FDW_ERROR

Error: failed to import foreign schema from odps: Can't find file system factory

  • Penyebab: Hologres tidak dapat mengakses sistem file tabel MaxCompute karena kesalahan konfigurasi.

  • Solusi: Verifikasi konfigurasi foreign server dan tabel eksternal Anda. Atau, impor data ke dalam tabel internal Hologres.

ERRCODE_FDW_ERROR

Error: Failed to import foreign schema from ODPS: Authorization Failed: xxx

  • Penyebab: Akun saat ini tidak memiliki izin yang diperlukan pada tabel MaxCompute yang ditentukan.

  • Solusi: Berikan izin yang diperlukan ke akun di MaxCompute. Untuk detailnya, lihat Manage user permissions by using commands.

Error: failed to import foreign schema from odps:Table not found -xxx

  • Penyebab: Tabel yang ditentukan tidak ada di MaxCompute.

  • Solusi: Verifikasi bahwa nama tabel dan proyek sudah benar di MaxCompute.

ERRCODE_UNIQUE_VIOLATION atau pelanggaran kunci primer

Error: Update row with Key (id)=(xxxx) multiple times or duplicate key value violates unique constraint

  • Penyebab: Data yang ditulis berisi nilai kunci primer duplikat, sehingga melanggar kendala unik.

  • Solusi:

    • Jika kesalahan terjadi pada pernyataan INSERT, gunakan sintaks INSERT INTO xx ON CONFLICT untuk menghapus duplikat kunci primer. Untuk detailnya, lihat INSERT ON CONFLICT(UPSERT).

    • Jika kesalahan ini terjadi dengan pernyataan INSERT...ON CONFLICT, data sumber itu sendiri berisi kunci primer duplikat. Untuk informasi lebih lanjut, lihat Common errors.

    • Kesalahan ini juga dapat terjadi jika sebuah tabel memiliki masa hidup data (TTL) yang telah kedaluwarsa dan data kedaluwarsa tersebut belum dihapus secara fisik. Dalam kasus ini, gunakan fungsi hg_remove_duplicated_pk untuk membersihkan data duplikat. Untuk detailnya, lihat Common errors.

ERRCODE_CHECK_VIOLATION atau kendala partisi

Error: ERROR: new row for relation violates partition constraint

  • Penyebab: Data yang dimasukkan ke dalam tabel partisi anak tidak sesuai dengan definisi nilai partisi. Misalnya, memasukkan baris dengan nilai partisi selain '20240110' ke dalam partisi yang didefinisikan untuk '20240110' menyebabkan kesalahan ini. Contoh:

    CREATE TABLE public.tbl_20240110 PARTITION OF public.tbl FOR VALUES IN('20240110');
    
    INSERT INTO public.tbl_20240110 SELECT * FROM odps_tbl where sale_date >'20240110';
    
    error: new row for relation "tbl_20240110" violates partition constraint
    
  • Solusi: Pastikan data yang Anda tulis ke tabel partisi anak memenuhi kendala partisi.

ERRCODE_NOT_NULL_VIOLATION atau kendala NOT NULL atau UsageProblem

Error: null value in column "xxx" violates not-null constraint

  • Penyebab: Nilai NULL ditulis ke kolom yang memiliki kendala NOT NULL.

  • Solusi: Hapus baris yang berisi nilai NULL pada kolom tersebut, lalu coba lagi operasi penulisan.

ERRCODE_UNDEFINED_TABLE

Error: Dispatch query failed: Table not found

  • Penyebab: Tabel tidak ada. Hal ini biasanya terjadi ketika tabel baru saja dibuat dan metadata-nya belum tersebar, atau ketika operasi TRUNCATE atau DROP dilakukan pada tabel selama eksekusi kueri.

  • Solusi: Gunakan Query Insight di HoloWeb untuk memeriksa adanya operasi DDL konkuren seperti TRUNCATE atau DROP. Selesaikan konflik apa pun, lalu coba lagi kueri tersebut. Hindari melakukan operasi DDL pada tabel yang sedang aktif dikueri. Untuk detailnya, lihat Query Insight.

ERRCODE_QUERY_CANCELED atau Query is cancelled

Error: ERROR: canceling statement due to statement timeout

  • Penyebab: Waktu eksekusi kueri melebihi batas waktu yang dikonfigurasi pada client.

  • Solusi: Optimalkan kueri untuk mengurangi waktu eksekusi, atau tingkatkan durasi timeout. Untuk detail pengaturan timeout, lihat Manage queries.

Error: ERROR: Query:[xxx] Get result failed: canceling statement due to user request

  • Penyebab: Kueri dibatalkan, biasanya karena operasi DROP atau TRUNCATE dilakukan pada tabel selama eksekusi.

  • Solusi: Gunakan Query Insight di HoloWeb untuk memeriksa adanya operasi DDL yang bertentangan. Untuk detailnya, lihat Query Insight. Hindari menjalankan operasi DDL selama eksekusi kueri.

Error: query is cancelled Cannot find index full ID:xxx (table id: x, index id: x) in storages or it is deleting

  • Penyebab: Operasi TRUNCATE atau DROP dilakukan pada salah satu tabel yang dikueri selama eksekusi. Hal ini mengubah ID tabel, sehingga kueri dibatalkan.

  • Solusi: Gunakan Query Insight untuk memeriksa apakah operasi TRUNCATE atau DROP dijalankan secara konkuren dengan kueri Anda. Untuk detailnya, lihat Query Insight.

ERRCODE_FEATURE_NOT_SUPPORTED atau fitur tidak didukung

Error: Feature not supported: insert into parent table

  • Penyebab: Hologres tidak mendukung pemasukan data langsung ke dalam tabel partisi induk.

  • Solusi: Masukkan data ke dalam tabel partisi anak tertentu. Untuk detailnya, lihat CREATE PARTITION TABLE.

Error: SELECT INTO is not supported now.

  • Penyebab: Hologres tidak mendukung sintaks SELECT INTO.

  • Solusi: Gunakan sintaks INSERT INTO SELECT untuk memasukkan data. Untuk detailnya, lihat INSERT.

Error: ALTER TABLE CHANGE OWNER is not supported in SLPM (Schema-Level Permission Mode)

  • Penyebab: Anda tidak dapat menggunakan ALTER TABLE untuk mengubah pemilik tabel dalam model izin tingkat skema (SLPM).

  • Solusi: Dalam SLPM, pemilik tabel adalah kelompok pengguna. Untuk mengubah izin pengguna, hapus pengguna dari kelompok pengguna tersebut. Untuk detailnya, lihat Remove a user from a user group.

Error: Feature not supported: INSERT ON CONFLICT RETURNING

  • Penyebab: Hologres tidak mendukung sintaks INSERT ON CONFLICT RETURNING.

  • Solusi: Gunakan sintaks INSERT ON CONFLICT tanpa klausa RETURNING. Untuk detailnya, lihat INSERT ON CONFLICT(UPSERT).

Error: ERROR: INSERT in ddl transaction is not supported now

  • Penyebab: Secara default, Hologres tidak mendukung pernyataan DML seperti INSERT dalam blok transaksi BEGIN...COMMIT. Contoh:

    BEGIN;
    INSERT xxx
    commit;
    ERROR: INSERT in ddl transaction is not supported now
  • Solusi: Jalankan pernyataan INSERT di luar transaksi, atau aktifkan transaksi DML. Untuk detailnya, lihat SQL transaction capabilities.

Error: Creating publication with table that without binlog is not supported now

  • Penyebab: Publikasi dibuat untuk tabel yang tidak memiliki binlog diaktifkan. Publikasi memerlukan binlog untuk berlangganan perubahan data.

  • Solusi: Aktifkan binlog pada tabel sebelum membuat publikasi. Anda hanya dapat membuat publikasi untuk tabel yang memiliki binlog diaktifkan. Untuk detailnya, lihat Use JDBC to consume Hologres binlogs.

Error: Feature not supported: INSERT on conflict contains un-unique column

  • Penyebab: Target konflik dalam pernyataan INSERT ON CONFLICT merujuk ke kolom non-kunci primer.

  • Solusi: Target konflik dalam INSERT ON CONFLICT harus hanya merujuk ke kolom kunci primer.

Error: Feature not supported: UPDATE with shard keys

  • Penyebab: Hologres tidak mendukung operasi UPDATE pada kolom kunci primer atau kunci distribusi.

  • Solusi: Jangan perbarui kolom kunci primer atau kunci distribusi. Untuk mengubah nilai-nilai ini, Anda harus DELETE baris lama dan INSERT baris baru.

Error: time before 1925 not supported

  • Penyebab: Fungsi terkait waktu mendukung rentang dari tahun 1925 hingga 2282 secara default. Nilai di luar rentang ini menyebabkan kesalahan.

  • Solusi: Untuk fungsi seperti to_char, to_date, atau to_timestamp, atur parameter GUC hg_experimental_functions_use_pg_implementation sebelum pernyataan SQL untuk mengaktifkan rentang waktu yang lebih luas. Untuk detailnya, lihat Date and time functions.

Error: Group by key is type of imprecise not supported

  • Penyebab: Klausul GROUP BY merujuk ke kolom dengan tipe data tidak presisi seperti FLOAT.

  • Solusi: Gunakan tipe data presisi alih-alih FLOAT dalam klausul GROUP BY.

Error: CREATE TABLE is not supported for current instance

  • Penyebab: Instans saat ini adalah instans Shared Cluster (titik akhir diawali dengan hgmc, misalnya hgmc-cn-xxwwwkkk), atau instans secondary. Anda dapat melihat titik akhir di konsol Hologres. Instans Shared Cluster hanya mendukung tabel eksternal, bukan tabel internal. Instans secondary bersifat read-only.

  • Solusi:

    • Jika Anda menggunakan instans Shared Cluster, buat tabel eksternal menggunakan sintaks tabel eksternal. Untuk detailnya, lihat CREATE FOREIGN TABLE. Atau, gunakan instans eksklusif untuk membuat tabel internal.

    • Jika Anda menggunakan instans secondary, Anda harus membuat tabel pada instans utama.

Error: ALTER TABLE ALTER COLUMN SET TYPE is not supported now

  • Penyebab: Hologres tidak mendukung perubahan tipe data kolom dengan ALTER TABLE.

  • Solusi: Untuk mengubah tipe kolom, buat ulang tabel dengan tipe kolom yang diinginkan.

Error: ERROR: Currently materialized view does not support aggregate on expressions, only support single column

  • Penyebab: Tampilan yang di-materialisasi satu tabel tidak mendukung ekspresi agregat pada kolom terhitung.

  • Solusi: Hindari penggunaan ekspresi dalam tampilan yang di-materialisasi satu tabel. Gunakan hanya agregat kolom tunggal. Untuk detailnya, lihat Manage materialized views by using SQL.

Error: ERROR: SELECT rule's target list has too few entries

  • Penyebab: Tampilan yang di-materialisasi real-time tidak mendukung ekspresi agregat pada kolom terhitung.

  • Solusi: Hindari penggunaan ekspresi dalam tampilan yang di-materialisasi real-time. Untuk detailnya, lihat Manage materialized views by using SQL.

Error: TransactionRowStore::DumpFlushDelta Not implemented

  • Penyebab: Versi Hologres saat ini memiliki keterbatasan implementasi pada sintaks DELETE FROM table USING, yang menyebabkan kesalahan ini.

  • Solusi: Tulis ulang pernyataan SQL untuk menghindari penggunaan klausa USING untuk penghapusan batch. Gunakan sintaks berikut sebagai gantinya:

    DELETE FROM table WHERE (col1, col2) IN ((val1, val2), ...);

ERRCODE_UNDEFINED_OBJECT

Error: column xxx does not exist

  • Penyebab: Kolom yang ditentukan tidak ada dalam tabel.

  • Solusi: Verifikasi bahwa nama kolom dalam pernyataan SQL sudah benar.

Error: Table group xxx does not exist

  • Penyebab: Kelompok tabel yang ditentukan tidak ada.

  • Solusi: Tentukan kelompok tabel yang ada saat membuat tabel, atau buat kelompok tabel terlebih dahulu.

Error: The specified partition does not exist

  • Penyebab: Kesalahan ini biasanya terjadi selama penulisan atau pembaruan data ketika tabel partisi anak target tidak ada.

  • Solusi: Buat partisi anak yang diperlukan sebelum menulis data.

Error: create binlog reader failed: Fail to find any shards, please check if the table group is in current virtual warehouse

  • Penyebab: Kelompok tabel yang ditentukan tidak dimuat pada virtual warehouse saat ini.

  • Solusi: Verifikasi bahwa kelompok tabel dimuat pada virtual warehouse. Jika tidak, konfigurasikan virtual warehouse untuk memuatnya. Untuk detailnya, lihat Authorize a virtual warehouse to access data.

ERRCODE_INSUFFICIENT_PRIVILEGE atau permission denied

Untuk kesalahan terkait izin, lihat topik berikut:

ERRCODE_OUT_OF_MEMORY atau OOM

Error: Total memory used by all existing queries exceeded memory limitation

  • Penyebab: Kueri melebihi batas memori dan memicu kesalahan kehabisan memori (OOM).

  • Solusi: Untuk detailnya, lihat Troubleshoot OOM errors.

ERRCODE_DATATYPE_MISMATCH

Error: internal error: Datasets has different schema

  • Penyebab: Skema set data yang digabungkan (misalnya, dalam pernyataan UNION atau INSERT...SELECT) tidak cocok dalam jumlah kolom, urutan, atau tipe data.

  • Solusi: Pastikan jumlah kolom, urutan, dan tipe data konsisten di seluruh bagian pernyataan.

ERRCODE_DIVISION_BY_ZERO

  • Penyebab: Pernyataan SQL berisi pembagian dengan nol.

  • Solusi:

    • Hindari pembagi nol, atau gunakan ekspresi CASE WHEN untuk menangani kasus ini.

    • Buat ekstensi kompatibel MySQL dan aktifkan opsi yang mengizinkan pembagian dengan nol. Untuk detailnya, lihat Migrate data from MySQL to Hologres.

ERRCODE_STRING_DATA_RIGHT_TRUNCATION

Error: value too long for type character varying(xxx)

  • Penyebab: Nilai data melebihi batas panjang character varying(n) yang ditentukan untuk kolom tersebut.

  • Solusi: Potong atau ubah data, tingkatkan batas panjang VARCHAR, atau ubah tipe kolom menjadi TEXT.

ERRCODE_PROGRAM_LIMIT_EXCEEDED atau Exceed Odps scan limit

Error: Exceeds the partition limitation of 512, current match xxx partitions.

  • Penyebab: Kueri memindai lebih dari 512 partisi dalam tabel eksternal MaxCompute, yang melebihi batas default.

  • Solusi: Tambahkan lebih banyak kondisi filter partisi, atau tingkatkan batas pemindaian partisi dengan menggunakan parameter GUC berikut. Untuk detailnya, lihat FAQ about MaxCompute integration.

    set hg_foreign_table_max_partition_limit =xx;

Error: Build desc failed: Exceeds the scan limitation of 200 GB, current scan xxx GB.

  • Penyebab: Jumlah data yang dipindai dalam tabel eksternal MaxCompute melebihi batas 200 GB.

  • Solusi:

    • Tambahkan lebih banyak kondisi filter untuk mengurangi jumlah data yang dipindai.

    • Impor data ke dalam tabel internal Hologres, yang tidak memiliki batas ukuran pemindaian.

ERRCODE_SYNTAX_ERROR

Error: syntax error at or near "xxxxx"

  • Penyebab: Pernyataan SQL memiliki kesalahan sintaks.

  • Solusi: Tinjau dan perbaiki sintaks SQL.

ERRCODE_UNDEFINED_FUNCTION

Error: DISTINCT is not implemented for window functions

  • Penyebab: Hologres saat ini tidak mendukung kata kunci DISTINCT dalam fungsi jendela.

  • Solusi: Hapus kata kunci DISTINCT dari fungsi jendela.

Error: ERROR:function xxx does not exist

  • Penyebab: Ekstensi yang diperlukan belum diinstal, atau pemanggilan fungsi menggunakan sintaks yang tidak valid.

  • Solusi: Instal ekstensi yang diperlukan atau perbaiki sintaks fungsi.

Error: ERROR: function jsonb_set(json, text[], jsonb, boolean) does not exist

  • Penyebab: Jenis argumen tidak sesuai dengan tanda tangan fungsi JSONB_SET.

  • Solusi: Pastikan argumen pertama JSONB_SET bertipe JSONB, bukan JSON. Untuk detailnya, lihat JSON and JSONB data types.

ERRCODE_E_R_E_READING_SQL_DATA_NOT_PERMITTED

Error: You have NO privilege 'odps:Select' on xxx

  • Penyebab: Akun saat ini tidak memiliki izin untuk mengkueri tabel MaxCompute.

  • Solusi: Berikan izin yang diperlukan ke akun di MaxCompute.

Error: The sensitive label of column 'xxx' is 2, but your effective label is 0

  • Penyebab: Akun saat ini hanya memiliki akses ke beberapa kolom dalam tabel MaxCompute.

  • Solusi: Berikan izin tingkat kolom yang lebih luas di MaxCompute, atau kueri hanya kolom yang Anda miliki aksesnya. Untuk detail otorisasi, lihat Manage user permissions by using commands.

ERRCODE_DUPLICATE_OBJECT

Error: extension "xxxxx" already exists

  • Penyebab: Ekstensi yang ditentukan sudah ada dalam database.

  • Solusi: Ekstensi sudah diinstal. Tidak perlu tindakan tambahan. Untuk menghindari kesalahan ini, gunakan CREATE EXTENSION IF NOT EXISTS.

ERRCODE_INVALID_TEXT_REPRESENTATION atau input tidak valid

Error: invalid input syntax for type numeric: \"\"

  • Penyebab: Kolom NUMERIC berisi data tidak valid, seperti string kosong, yang tidak dapat diurai sebagai nilai numerik.

  • Solusi: Bersihkan data sumber untuk memastikan sesuai dengan tipe NUMERIC. Misalnya, ubah string kosong menjadi NULL atau 0.

Error: invalid input syntax for integer: xxx

  • Penyebab: Kolom INT berisi data yang tidak dapat diurai sebagai bilangan bulat.

  • Solusi: Bersihkan data yang tidak valid.

ERRCODE_BAD_COPY_FILE_FORMAT

Error: missing data for column "xxx". failed to query next

  • Penyebab: Format file data salah. Hal ini sering terjadi ketika data berisi delimiter yang ditentukan dalam perintah COPY (seperti koma atau spasi), sehingga menyebabkan ketidaksesuaian jumlah kolom.

  • Solusi: Bersihkan data atau gunakan delimiter berbeda yang tidak muncul dalam nilai data.

ERRCODE_UNDEFINED_COLUMN

Error: ERROR: INSERT has more expressions than target columns

  • Penyebab: Jumlah nilai dalam pernyataan INSERT melebihi jumlah kolom dalam tabel target.

  • Solusi: Pastikan jumlah nilai dalam pernyataan INSERT sesuai dengan jumlah kolom target.

ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE

Error: bigint out of range

  • Penyebab: Nilai melebihi rentang valid tipe BIGINT.

  • Solusi: Pastikan data berada dalam rentang BIGINT (-9223372036854775808 hingga 9223372036854775807), atau gunakan tipe NUMERIC untuk nilai yang lebih besar.

Error: numeric field overflow in function round

  • Penyebab: Nilai NUMERIC melebihi batas presisi yang ditentukan.

  • Solusi: Sesuaikan presisi kolom NUMERIC agar sesuai dengan data, atau bersihkan data agar sesuai dengan presisi yang ditentukan.

ERRCODE_DATETIME_FIELD_OVERFLOW

Error: InsertOverwrite insert select table data failed : column a.unsign_type does not exist

  • Penyebab: Kolom yang ditentukan tidak ada dalam tabel, atau nama parameter salah.

  • Solusi: Tinjau dan perbaiki sintaks SQL.

Error: mismatched properties: table orientation is "column" but storage format is "sst"

  • Penyebab: Properti tabel tidak sesuai. Penyimpanan berorientasi kolom ditentukan tetapi format penyimpanan diatur ke SST, yang tidak kompatibel.

  • Solusi: Tinjau dan perbaiki pernyataan SQL.

ERRCODE_INVALID_DATETIME_FORMAT

Error: invalid value "" for "yyyy". Value must be an integer.

  • Penyebab: Data tidak sesuai dengan format datetime yang diharapkan.

  • Solusi: Pastikan data berisi nilai datetime yang valid sebelum menulis.

ERRCODE_CHARACTER_NOT_IN_REPERTOIRE

Error: invalid byte sequence for encoding "UTF8": 0xe9 0x80

  • Penyebab: Data berisi karakter yang tidak valid dalam pengkodean UTF-8.

  • Solusi: Bersihkan data yang tidak valid tersebut.

ERRCODE_DUPLICATE_TABLE

Error: relation "xxxx" already exists

  • Penyebab: Tabel yang ditentukan sudah ada dalam database.

  • Solusi: Gunakan nama tabel berbeda, atau gunakan CREATE TABLE IF NOT EXISTS untuk menghindari kesalahan.

ERRCODE_UNTRANSLATABLE_CHARACTER

Error: character with byte sequence 0xe4 0x9e 0xab in encoding "UTF8" has no equivalent in encoding "GBK"

  • Penyebab: Karakter UTF-8 tidak memiliki padanan dalam pengkodean GBK target.

  • Solusi: Bersihkan data yang tidak valid.

ERRCODE_GROUPING_ERROR

Error: column "xxx" must appear in the GROUP BY clause or be used in an aggregate function

  • Penyebab: Kolom non-agregat dalam daftar SELECT tidak disertakan dalam klausa GROUP BY. Semua kolom dalam daftar SELECT harus muncul dalam GROUP BY atau digunakan dalam fungsi agregat.

  • Solusi: Tambahkan kolom ke klausa GROUP BY atau gunakan dalam fungsi agregat.

ERRCODE_INVALID_TRANSACTION_STATE

Error: SET_TABLE_PROPERTY and CREATE TABLE statement are not in the same transaction for table

  • Penyebab: Pernyataan CREATE TABLE dan call set_table_property tidak berada dalam transaksi yang sama.

  • Solusi: Bungkus pernyataan CREATE TABLE dan semua pernyataan call set_table_property dalam blok transaksi yang sama. Contoh:

    begin;
    CREATE TABLE tbl (
     xxxx
    );
    call set_table_property('tbl', 'orientation', 'xx');
    call set_table_property('tbl', 'distribution_key', 'xxx');
    commit;

ERRCODE_AMBIGUOUS_COLUMN

Error: column reference "xxx" is ambiguous

  • Penyebab: Nama kolom dalam kueri JOIN ambigu karena ada di beberapa tabel. Misalnya, dalam SELECT id FROM t1 INNER JOIN t2 ON t1.id=t2.id, id dalam klausa SELECT ambigu karena bisa merujuk ke t1 atau t2.

  • Solusi: Kualifikasikan kolom dengan nama tabel atau alias (misalnya, t1.id).

ERRCODE_DUPLICATE_COLUMN

Error: column "xxx" specified more than once

  • Penyebab: Nama kolom muncul lebih dari sekali dalam pernyataan CREATE TABLE.

  • Solusi: Hapus kolom duplikat dari pernyataan CREATE TABLE.

ERRCODE_AMBIGUOUS_FUNCTION

Kesalahan ini terjadi ketika pemanggilan fungsi cocok dengan beberapa overload dan database tidak dapat menentukan mana yang akan digunakan. Untuk mengatasinya, lakukan casting eksplisit argumen ke tipe data yang diinginkan.

ERRCODE_INVALID_COLUMN_DEFINITION

Error: invalid definition of a numeric type

  • Penyebab: Kolom NUMERIC atau DECIMAL didefinisikan tanpa menentukan presisinya.

  • Solusi: Tentukan presisi untuk kolom NUMERIC atau DECIMAL, seperti NUMERIC(38, 18).

ERRCODE_CANNOT_COERCE

Error: cannot cast type date to integer

  • Penyebab: Tipe DATE tidak dapat di-cast ke tipe INTEGER.

  • Solusi: Ubah sintaks SQL untuk menggunakan casting tipe yang valid.

ERRCODE_UNDEFINED_SCHEMA atau ERRCODE_INVALID_SCHEMA_NAME

Error: schema "xxxx" does not exist

  • Penyebab: Skema tidak ada dalam database.

  • Solusi: Verifikasi bahwa nama skema dalam pernyataan SQL sudah benar, atau buat skema terlebih dahulu.

ERRCODE_INTERNAL_ERROR

Menunjukkan kesalahan internal yang tidak terduga.

Error: internal error: Connect timeout, err: std_exception: Connection refused

  • Penyebab: Instans Hologres tidak tersedia atau tidak merespons.

  • Solusi: Kirim tiket dukungan untuk menyelidiki gangguan instans Hologres.

Error: too many shards in this instance

  • Penyebab: Jumlah shard yang ditentukan melebihi batas total shard instans.

  • Solusi: Periksa batas shard untuk instans Anda dan kurangi jumlah shard sesuai kebutuhan. Untuk detailnya, lihat Instance management.

Error: internal error: Write is not allowed in readonly mode

  • Penyebab: Operasi tulis (INSERT, UPDATE, DELETE) tidak didukung pada instans secondary (replika baca saja).

  • Solusi: Lakukan operasi tulis pada instans utama. Instans secondary hanya mendukung kueri SELECT.

Error: remaining connection slots are reserved for non-replication superuser connections

  • Penyebab: Instans telah mencapai batas maksimum koneksi. Hanya koneksi superuser yang diizinkan.

  • Solusi: Gunakan akun superuser untuk melepaskan koneksi menganggur. Untuk detailnya, lihat Manage connections.

Error: Build desc failed: Column type: information_schema.sql_identifier can not translate into hologres type

  • Penyebab: Kueri merujuk ke kolom tabel sistem dengan tipe data kompleks yang tidak didukung Hologres.

  • Solusi: Hindari penggabungan tabel sistem dengan tipe kolom kompleks dalam kueri Hologres.

Error: ERROR: commit ddl phase1 failed: DDLWrite is not allowed on replica

  • Penyebab: Operasi DDL seperti memodifikasi daftar putih alamat IP tidak dapat dilakukan pada instans secondary.

  • Solusi: Modifikasi daftar putih alamat IP pada instans utama.

Error: current transaction is aborted, commands ignored until end of transaction block

  • Penyebab: Perintah dalam transaksi gagal, dan perintah berikutnya dikeluarkan sebelum melakukan rollback atau mengakhiri transaksi. Contoh:

    begin;
    create xxxx
    
    begin;
  • Solusi: Jalankan perintah rollback; untuk mengakhiri transaksi saat ini dan membatalkan semua perubahan yang belum dikomit.

Error: query length xxxxx  exceeded the maximum 102400

  • Penyebab: Panjang kueri melebihi batas 102.400 byte.

  • Solusi: Tulis ulang kueri untuk memastikan panjangnya berada dalam batas yang ditentukan.

Error: Modify record by primary key is not on this table

  • Penyebab: Kesalahan ini terjadi ketika menulis data dengan Flink dalam mode update ke tabel yang tidak memiliki kunci primer.

  • Solusi: Tetapkan kunci primer yang sesuai untuk tabel tujuan. Untuk detailnya, lihat Primary Key.

Error: ERROR: xxx for fe, should not be evaluated

  • Penyebab: Fungsi berjalan di mesin Hologres, tetapi kueri tabel sistem melewati mesin tersebut. Fungsi tidak dapat dievaluasi di luar konteks mesin.

  • Solusi: Jangan gunakan fungsi ini dalam kueri terhadap tabel sistem Hologres.

Handle column names starting with a digit

Karena Hologres kompatibel dengan PostgreSQL, nama kolom yang diawali angka harus diapit tanda kutip ganda (").

Jika nama kolom diawali angka, Anda harus mengapitnya dengan tanda kutip ganda dalam kueri Anda, seperti pada contoh berikut:

select bizdate,"1_day_active_users","7_day_active_users" from t_active_users;

Error: cannot drop table because other objects depend on it

  • Penyebab: Tabel memiliki objek dependen seperti tampilan yang mereferensinya.

  • Solusi: Hapus objek dependen terlebih dahulu, lalu hapus tabel.

Error: BinaryArray cannot contain more than 2147483646 bytes

  • Penyebab

    Ketika statistik tabel kedaluwarsa, pengoptimal dapat memilih rencana eksekusi suboptimal untuk penggabungan multi-tabel, menyebabkan ukuran total kolom tunggal dalam satu batch melebihi 2 GB dan memicu kesalahan ini.

  • Solusi

    Jalankan perintah berikut pada tabel dalam penggabungan untuk memperbarui statistiknya:

    analyze <tablename>;

    Jika kesalahan tetap terjadi setelah memperbarui statistik, data mungkin berisi nilai kolom yang sangat besar. Tambahkan parameter GUC berikut sebelum pernyataan SQL:

    set hg_experimental_query_batch_size = 1024;

Error: Cannot reserve capacity larger than 2^31 - 1 for binary

  • Penyebab dan solusi

    • Penyebab 1: Ketika statistik tabel kedaluwarsa, rencana eksekusi suboptimal dapat menyebabkan ukuran total kolom tunggal dalam satu batch melebihi 2 GB, memicu kesalahan ini.

      Solusi: Jalankan perintah analyze pada tabel untuk memperbarui statistiknya.

      analyze <tablename>;
    • Penyebab 2: Ukuran data dalam kolom tabel melebihi 2 GB.

      Solusi: Tambahkan parameter GUC berikut sebelum pernyataan SQL untuk mengurangi ukuran batch yang dibaca setiap kueri:

      set hg_experimental_query_batch_size = 1024;

Error: internal error: Sequence is used out

  • Penyebab: Kolom tipe serial telah menghabiskan nilai urutan auto-increment-nya.

  • Solusi:

    • Jika Anda menggunakan tipe serial, buat ulang tabel dan ubah tipe kolom menjadi bigserial.

    • Menulis ke kolom serial memperoleh kunci tabel dan dapat mengurangi konkurensi. Pertimbangkan untuk menghindari tipe serial jika memungkinkan.

Add line breaks in SQL query results

Di Hologres, untuk menyisipkan jeda baris dalam hasil kueri SQL, gunakan sintaks string escape dengan awalan E. Dalam string biasa, \n atau \r\n diperlakukan sebagai karakter literal dan tidak menghasilkan jeda baris.

  • Contoh

    -- Salah: tidak menghasilkan jeda baris.
    SELECT STRING_AGG(name, '\r\n') FROM t1;
    
    -- Benar: gunakan konstanta string escape dengan awalan E.
    SELECT STRING_AGG(name, E'\r\n') FROM t1;
    
    -- Anda juga dapat menggunakan \n saja.
    SELECT STRING_AGG(name, E'\n') FROM t1;
  • Deskripsi

    Hologres kompatibel dengan sintaks PostgreSQL. Di PostgreSQL, string yang diawali dengan E (seperti E'\n') mendukung urutan escape bergaya C. Dalam urutan ini, \n merepresentasikan karakter baris baru dan \r merepresentasikan pengembalian kursor.

What do I do if the NOW() function returns a delayed time?

Di Hologres, fungsi NOW() mengembalikan waktu mulai transaksi saat ini, bukan jam sistem real-time. Jika kueri dijalankan dalam transaksi jangka panjang atau koneksi digunakan ulang melalui kolam koneksi, waktu yang dikembalikan mungkin tertinggal dari waktu sistem aktual.

Untuk mendapatkan jam sistem real-time saat ini, gunakan fungsi CLOCK_TIMESTAMP() sebagai gantinya. Berbeda dengan NOW(), CLOCK_TIMESTAMP() mengembalikan waktu tepat pada saat pemanggilan dan tidak dipengaruhi oleh waktu mulai transaksi.

Does the DELETE statement support subqueries as dynamic partition selectors?

Tidak. Di Hologres, pemangkasan partisi mengharuskan kondisi partisi menggunakan nilai statis atau nilai terikat terparameterisasi. Subkueri dan ekspresi dinamis tidak didukung sebagai pemilih partisi, seperti WHERE ds = (SELECT MAX(ds) FROM ...).

Menggunakan subkueri sebagai kondisi partisi menyebabkan kegagalan pemangkasan partisi, yang dapat mengakibatkan pemindaian tabel penuh dengan penurunan performa signifikan. Untuk menghindari masalah ini, kueri terlebih dahulu nilai partisi dan simpan dalam variabel, lalu gunakan nilai statis dalam pernyataan DELETE.

How do I avoid ORCA optimizer errors without modifying GUC parameters?

Anda tidak dapat menyelesaikan masalah yang diketahui ini hanya dengan menulis ulang pernyataan SQL. Untuk memperbaiki kesalahan pengoptimal ORCA, upgrade instans Hologres ke versi 4.0 atau lebih baru.

Why does a new instance report errors or experience performance issues while the old instance runs normally?

Instans Hologres baru dan lama mungkin berperilaku berbeda karena perbedaan versi, kapasitas komputasi, dan variasi beban kerja. Instans baru mungkin menggunakan versi mesin berbeda dengan aturan validasi yang lebih ketat atau konfigurasi default yang berubah. Selain itu, kapasitas komputasi dan profil beban instans baru mungkin berbeda dari instans lama.

Untuk menyelesaikan masalah kompatibilitas dan performa pada instans baru, upgrade ke versi stabil terbaru Hologres.

Error: ERROR: tables can have at most 6400 columns

  • Penyebab: Hologres membatasi setiap tabel hingga maksimum 6400 kolom. Bahkan setelah Anda menghapus kolom dengan DROP COLUMN, jumlah kolom dalam metadata tabel terus bertambah. Operasi ADD COLUMN dan DROP COLUMN yang sering dapat menyebabkan jumlah total kolom metadata melebihi 6400, memicu kesalahan ini.

  • Solusi:

    • Perbaikan jangka pendek: Buat ulang tabel dan migrasikan data. Tabel baru dimulai dengan jumlah kolom yang segar.

    • Rekomendasi jangka panjang: Optimalkan skema tabel dengan menggabungkan kolom yang sering berubah ke dalam satu kolom JSON untuk menghindari operasi ADD/DROP COLUMN berulang.