Tous les produits
Search
Centre de documentation

Hologres:FAQ about Hologres SQL statements

Dernière mise à jour :Aug 11, 2026

Cette rubrique répertorie les codes d'erreur SQL Hologres courants, ainsi que leurs causes et solutions.

HG_ERRCODE_FDW_ERROR

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

  • Cause : Hologres ne peut pas accéder au système de fichiers de la table MaxCompute en raison d'une erreur de configuration.

  • Solution : Vérifiez les configurations de votre serveur étranger et de votre table externe. Vous pouvez également importer les données dans une table interne Hologres.

ERRCODE_FDW_ERROR

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

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

  • Cause : La table spécifiée n'existe pas dans MaxCompute.

  • Solution : Vérifiez que le nom de la table et le projet sont corrects dans MaxCompute.

ERRCODE_UNIQUE_VIOLATION ou violation de clé primaire

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

  • Cause : Les données écrites contiennent des valeurs de clé primaire en double, ce qui viole la contrainte d'unicité.

  • Solution :

    • Si l'erreur survient lors d'une instruction INSERT, utilisez la syntaxe INSERT INTO xx ON CONFLICT pour dédupliquer les clés primaires. Pour plus de détails, reportez-vous à INSERT ON CONFLICT(UPSERT).

    • Si cette erreur se produit avec une instruction INSERT...ON CONFLICT , cela signifie que les données source elles-mêmes contiennent des clés primaires en double. Pour plus d'informations, consultez la section Erreurs courantes.

    • Cette erreur peut également se produire si une table a un TTL (Time To Live) expiré et que les données expirées n'ont pas encore été supprimées physiquement. Dans ce cas, utilisez la fonction hg_remove_duplicated_pk pour nettoyer les données en double. Pour plus de détails, consultez la section Erreurs courantes.

ERRCODE_CHECK_VIOLATION ou contrainte de partition

Erreur : ERROR: new row for relation violates partition constraint

  • Cause : Les données insérées dans une table de partition enfant ne correspondent pas à la définition de la valeur de partition. Par exemple, l'insertion d'une ligne avec une valeur de partition autre que '20240110' dans une partition définie pour '20240110' provoque cette erreur. Exemple :

    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
    
  • Solution : Assurez-vous que les données écrites dans une table de partition enfant respectent la contrainte de partition.

ERRCODE_NOT_NULL_VIOLATION ou contrainte NOT NULL ou UsageProblem

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

  • Cause : Une valeur NULL a été écrite dans une colonne soumise à une contrainte NOT NULL.

  • Solution : Supprimez les lignes contenant des valeurs NULL dans cette colonne, puis relancez l'opération d'écriture.

ERRCODE_UNDEFINED_TABLE

Erreur : Dispatch query failed: Table not found

  • Cause : La table n'existe pas. Cela se produit généralement lorsque la table a été créée récemment et que ses métadonnées ne se sont pas encore propagées, ou lorsqu'une opération TRUNCATE ou DROP a été effectuée sur la table pendant l'exécution de la requête.

  • Solution : Utilisez Query Insight dans HoloWeb pour vérifier s'il existe des opérations DDL concurrentes telles que TRUNCATE ou DROP. Résolvez les conflits éventuels, puis relancez la requête. Évitez d'effectuer des opérations DDL sur des tables faisant l'objet de requêtes actives. Pour plus de détails, reportez-vous à Query Insight.

ERRCODE_QUERY_CANCELED ou requête annulée

Erreur : ERROR: canceling statement due to statement timeout

  • Cause : Le temps d'exécution de la requête a dépassé le délai d'expiration de l'instruction configuré sur le client.

  • Solution : Optimisez la requête pour réduire son temps d'exécution ou augmentez la durée du délai d'expiration. Pour plus de détails sur les paramètres de délai d'expiration, reportez-vous à Gérer les requêtes.

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

  • Cause : La requête a été annulée, généralement parce qu'une opération DROP ou TRUNCATE a été effectuée sur la table pendant l'exécution.

  • Solution : Utilisez Query Insight dans HoloWeb pour vérifier s'il existe des opérations DDL conflictuelles. Pour plus de détails, reportez-vous à Query Insight. Évitez d'exécuter des opérations DDL pendant l'exécution des requêtes.

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

  • Cause : Une opération TRUNCATE ou DROP a été effectuée sur l'une des tables interrogées pendant l'exécution. Cela a modifié l'ID de la table, entraînant l'annulation de la requête.

  • Solution : Utilisez Query Insight pour vérifier si une opération TRUNCATE ou DROP a été exécutée simultanément à votre requête. Pour plus de détails, reportez-vous à Query Insight.

ERRCODE_FEATURE_NOT_SUPPORTED ou fonctionnalité non prise en charge

Erreur : Feature not supported: insert into parent table

  • Cause : Hologres ne prend pas en charge l'insertion directe de données dans une table de partition parente.

  • Solution : Insérez plutôt les données dans une table de partition enfant spécifique. Pour plus de détails, reportez-vous à CREATE PARTITION TABLE.

Erreur : SELECT INTO is not supported now.

  • Cause : Hologres ne prend pas en charge la syntaxe SELECT INTO.

  • Solution : Utilisez la syntaxe INSERT INTO SELECT pour insérer des données. Pour plus de détails, reportez-vous à INSERT.

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

  • Cause : Vous ne pouvez pas utiliser ALTER TABLE pour modifier le propriétaire de la table dans le modèle d'autorisations au niveau du schéma (SLPM).

  • Solution : Dans le modèle SLPM, les propriétaires de tables sont des groupes d'utilisateurs. Pour modifier les autorisations d'un utilisateur, retirez-le du groupe d'utilisateurs. Pour plus de détails, reportez-vous à la section Retirer un utilisateur d'un groupe d'utilisateurs.

Erreur : Feature not supported: INSERT ON CONFLICT RETURNING

  • Cause : Hologres ne prend pas en charge la syntaxe INSERT ON CONFLICT RETURNING .

  • Solution : Utilisez la syntaxe INSERT ON CONFLICT sans la clause RETURNING. Pour plus de détails, reportez-vous à INSERT ON CONFLICT(UPSERT).

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

  • Cause : Par défaut, Hologres ne prend pas en charge les instructions DML telles que INSERT dans un bloc de transaction BEGIN...COMMIT . Exemple :

    BEGIN;
    INSERT xxx
    commit;
    ERROR: INSERT in ddl transaction is not supported now
  • Solution : Exécutez l'instruction INSERT en dehors de la transaction ou activez les transactions DML. Pour plus de détails, reportez-vous à Capacités de transaction SQL.

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

  • Cause : Une publication a été créée pour une table dont le journal binaire (binlog) n'est pas activé. Les publications nécessitent le journal binaire pour s'abonner aux modifications de données.

  • Solution : Activez le journal binaire sur la table avant de créer la publication. Vous ne pouvez créer des publications que pour les tables dont le journal binaire est activé. Pour plus de détails, reportez-vous à Utiliser JDBC pour consommer les journaux binaires Hologres.

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

  • Cause : La cible de conflit dans l'instruction INSERT ON CONFLICT fait référence à une colonne qui n'est pas une clé primaire.

  • Solution : La cible de conflit dans INSERT ON CONFLICT doit faire référence uniquement aux colonnes de clé primaire.

Erreur : Feature not supported: UPDATE with shard keys

  • Cause : Hologres ne prend pas en charge les opérations UPDATE sur les colonnes de clé primaire ou de clé de distribution.

  • Solution : Ne mettez pas à jour les colonnes de clé primaire ou de clé de distribution. Pour modifier ces valeurs, vous devez DELETE l'ancienne ligne et INSERT une nouvelle.

Erreur : time before 1925 not supported

  • Cause : Les fonctions liées au temps prennent en charge par défaut la plage allant de 1925 à 2282. Les valeurs en dehors de cette plage provoquent une erreur.

  • Solution : Pour des fonctions telles que to_char, to_date ou to_timestamp, définissez le paramètre GUC hg_experimental_functions_use_pg_implementation avant l'instruction SQL pour activer une plage temporelle plus large. Pour plus de détails, reportez-vous à Fonctions de date et d'heure.

Erreur : Group by key is type of imprecise not supported

  • Cause : La clause GROUP BY fait référence à une colonne ayant un type de données imprécis, tel que FLOAT.

  • Solution : Utilisez des types de données précis au lieu de FLOAT dans la clause GROUP BY.

Erreur : CREATE TABLE is not supported for current instance

  • Cause : L'instance actuelle est une instance Shared Cluster (le endpoint commence par hgmc , par exemple hgmc-cn-xxwwwkkk ) ou une instance secondaire. Vous pouvez consulter le endpoint dans la console Hologres. Les instances Shared Cluster prennent en charge uniquement les tables externes, et non les tables internes. Les instances secondaires sont en lecture seule.

  • Solution :

    • Si vous utilisez une instance Shared Cluster, créez une table externe à l'aide de la syntaxe de table étrangère. Pour plus de détails, reportez-vous à CREATE FOREIGN TABLE. Vous pouvez également utiliser une instance exclusive pour créer des tables internes.

    • Si vous utilisez une instance secondaire, vous devez créer les tables sur l'instance principale.

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

  • Cause : Hologres ne prend pas en charge la modification du type de données d'une colonne avec ALTER TABLE .

  • Solution : Pour modifier le type d'une colonne, recréez la table avec le type de colonne souhaité.

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

  • Cause : Les vues matérialisées sur table unique ne prennent pas en charge les expressions d'agrégation sur les colonnes calculées.

  • Solution : Évitez d'utiliser des expressions dans les vues matérialisées sur table unique. Utilisez uniquement des agrégats sur colonne unique. Pour plus de détails, reportez-vous à Gérer les vues matérialisées à l'aide de SQL.

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

  • Cause : Les vues matérialisées en temps réel ne prennent pas en charge les expressions d'agrégation sur les colonnes calculées.

  • Solution : Évitez d'utiliser des expressions dans les vues matérialisées en temps réel. Pour plus de détails, reportez-vous à Gérer les vues matérialisées à l'aide de SQL.

Erreur : TransactionRowStore::DumpFlushDelta Not implemented

  • Cause : La version actuelle de Hologres présente une limitation d'implémentation concernant la syntaxe DELETE FROM table USING , ce qui provoque cette erreur.

  • Solution : Réécrivez l'instruction SQL pour éviter d'utiliser la clause USING pour les suppressions par lot. Utilisez plutôt la syntaxe suivante :

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

ERRCODE_UNDEFINED_OBJECT

Erreur : column xxx does not exist

  • Cause : La colonne spécifiée n'existe pas dans la table.

  • Solution : Vérifiez que le nom de la colonne dans l'instruction SQL est correct.

Erreur : Table group xxx does not exist

  • Cause : Le groupe de tables spécifié n'existe pas.

  • Solution : Spécifiez un groupe de tables existant lors de la création de la table ou créez d'abord le groupe de tables.

Erreur : The specified partition does not exist

  • Cause : Cette erreur se produit généralement lors d'écritures ou de mises à jour de données lorsque la table de partition enfant cible n'existe pas.

  • Solution : Créez la partition enfant requise avant d'écrire les données.

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

  • Cause : Le groupe de tables spécifié n'est pas chargé sur l'entrepôt virtuel actuel.

  • Solution : Vérifiez que le groupe de tables est chargé sur l'entrepôt virtuel. Si ce n'est pas le cas, configurez l'entrepôt virtuel pour le charger. Pour plus de détails, reportez-vous à Autoriser un entrepôt virtuel à accéder aux données.

ERRCODE_INSUFFICIENT_PRIVILEGE ou permission denied

Pour les erreurs liées aux autorisations, consultez les rubriques suivantes :

ERRCODE_OUT_OF_MEMORY ou OOM

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

  • Cause : La requête a dépassé la limite de mémoire et a déclenché une erreur d'épuisement de la mémoire (OOM).

  • Solution : Pour plus de détails, reportez-vous à Résoudre les erreurs OOM.

ERRCODE_DATATYPE_MISMATCH

Erreur : internal error: Datasets has different schema

  • Cause : Les schémas des jeux de données combinés (par exemple, dans une instruction UNION ou INSERT...SELECT) ne correspondent pas en termes de nombre de colonnes, d'ordre ou de type de données.

  • Solution : Assurez-vous que le nombre de colonnes, l'ordre et les types de données sont cohérents dans toutes les parties de l'instruction.

ERRCODE_DIVISION_BY_ZERO

  • Cause : L'instruction SQL contient une division par zéro.

  • Solution :

    • Évitez les diviseurs nuls ou utilisez une expression CASE WHEN pour gérer ce cas.

    • Créez une extension compatible MySQL et activez l'option qui autorise la division par zéro. Pour plus de détails, reportez-vous à Migrer des données de MySQL vers Hologres.

ERRCODE_STRING_DATA_RIGHT_TRUNCATION

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

  • Cause : La valeur des données dépasse la limite de longueur character varying(n) définie pour la colonne.

  • Solution : Tronquez ou transformez les données, augmentez la limite de longueur VARCHAR ou modifiez le type de colonne en TEXT.

ERRCODE_PROGRAM_LIMIT_EXCEEDED ou dépassement de la limite de scan Odps

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

  • Cause : La requête analyse plus de 512 partitions dans la table externe MaxCompute, ce qui dépasse la limite par défaut.

  • Solution : Ajoutez davantage de conditions de filtre de partition ou augmentez la limite d'analyse des partitions à l'aide du paramètre GUC suivant. Pour plus de détails, reportez-vous à la section FAQ sur l'intégration MaxCompute.

    set hg_foreign_table_max_partition_limit =xx;

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

  • Cause : La quantité de données analysées dans la table externe MaxCompute dépasse la limite de 200 Go.

  • Solution :

    • Ajoutez davantage de conditions de filtre pour réduire la quantité de données analysées.

    • Importez les données dans une table interne Hologres, qui n'a pas de limite de taille d'analyse.

ERRCODE_SYNTAX_ERROR

Erreur : syntax error at or near "xxxxx"

  • Cause : L'instruction SQL comporte une erreur de syntaxe.

  • Solution : Vérifiez et corrigez la syntaxe SQL.

ERRCODE_UNDEFINED_FUNCTION

Erreur : DISTINCT is not implemented for window functions

  • Cause : Hologres ne prend actuellement pas en charge le mot-clé DISTINCT dans les fonctions de fenêtrage.

  • Solution : Supprimez le mot-clé DISTINCT de la fonction de fenêtrage.

Erreur : ERROR:function xxx does not exist

  • Cause : L'extension requise n'est pas installée ou l'appel de fonction utilise une syntaxe invalide.

  • Solution : Installez l'extension requise ou corrigez la syntaxe de la fonction.

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

  • Cause : Les types d'arguments ne correspondent pas à la signature de la fonction JSONB_SET.

  • Solution : Assurez-vous que le premier argument de JSONB_SET est de type JSONB et non JSON. Pour plus de détails, reportez-vous à Types de données JSON et JSONB.

ERRCODE_E_R_E_READING_SQL_DATA_NOT_PERMITTED

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

  • Cause : Le compte actuel ne dispose pas des autorisations nécessaires pour interroger la table MaxCompute.

  • Solution : Accordez les autorisations requises au compte dans MaxCompute.

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

  • Cause : Le compte actuel a accès uniquement à certaines colonnes de la table MaxCompute.

  • Solution : Accordez des autorisations plus larges au niveau des colonnes dans MaxCompute ou interrogez uniquement les colonnes auxquelles vous avez accès. Pour plus de détails sur l'autorisation, reportez-vous à Gérer les autorisations des utilisateurs à l'aide de commandes.

ERRCODE_DUPLICATE_OBJECT

Erreur : extension "xxxxx" already exists

  • Cause : L'extension spécifiée existe déjà dans la base de données.

  • Solution : L'extension est déjà installée. Aucune action n'est nécessaire. Pour éviter cette erreur, utilisez CREATE EXTENSION IF NOT EXISTS .

ERRCODE_INVALID_TEXT_REPRESENTATION ou entrée invalide

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

  • Cause : La colonne NUMERIC contient des données invalides, telles que des chaînes vides, qui ne peuvent pas être analysées comme une valeur numérique.

  • Solution : Nettoyez les données source pour vous assurer qu'elles sont conformes au type NUMERIC. Par exemple, convertissez les chaînes vides en NULL ou en 0.

Erreur : invalid input syntax for integer: xxx

  • Cause : La colonne INT contient des données qui ne peuvent pas être analysées comme un entier.

  • Solution : Nettoyez les données invalides.

ERRCODE_BAD_COPY_FILE_FORMAT

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

  • Cause : Le format du fichier de données est incorrect. Cela se produit souvent lorsque les données contiennent le délimiteur spécifié dans la commande COPY (tel qu'une virgule ou un espace), ce qui entraîne une incompatibilité du nombre de colonnes.

  • Solution : Nettoyez les données ou utilisez un autre délimiteur qui n'apparaît pas dans les valeurs des données.

ERRCODE_UNDEFINED_COLUMN

Erreur : ERROR: INSERT has more expressions than target columns

  • Cause : Le nombre de valeurs dans l'instruction INSERT dépasse le nombre de colonnes dans la table cible.

  • Solution : Assurez-vous que le nombre de valeurs dans l'instruction INSERT correspond au nombre de colonnes cibles.

ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE

Erreur : bigint out of range

  • Cause : La valeur dépasse la plage valide du type BIGINT.

  • Solution : Assurez-vous que les données se situent dans la plage BIGINT (-9223372036854775808 à 9223372036854775807) ou utilisez le type NUMERIC pour des valeurs plus grandes.

Erreur : numeric field overflow in function round

  • Cause : La valeur NUMERIC dépasse sa limite de précision définie.

  • Solution : Ajustez la précision de la colonne NUMERIC pour accommoder les données ou nettoyez les données pour qu'elles correspondent à la précision définie.

ERRCODE_DATETIME_FIELD_OVERFLOW

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

  • Cause : La colonne spécifiée n'existe pas dans la table ou le nom d'un paramètre est incorrect.

  • Solution : Vérifiez et corrigez la syntaxe SQL.

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

  • Cause : Propriétés de table incompatibles. Le stockage orienté colonne a été spécifié, mais le format de stockage a été défini sur SST, ce qui est incompatible.

  • Solution : Vérifiez et corrigez l'instruction SQL.

ERRCODE_INVALID_DATETIME_FORMAT

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

  • Cause : Les données ne sont pas conformes au format datetime attendu.

  • Solution : Assurez-vous que les données contiennent des valeurs datetime valides avant l'écriture.

ERRCODE_CHARACTER_NOT_IN_REPERTOIRE

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

  • Cause : Les données contiennent des caractères non valides dans l'encodage UTF-8.

  • Solution : Nettoyez les données invalides.

ERRCODE_DUPLICATE_TABLE

Erreur : relation "xxxx" already exists

  • Cause : La table spécifiée existe déjà dans la base de données.

  • Solution : Utilisez un autre nom de table ou utilisez CREATE TABLE IF NOT EXISTS pour éviter l'erreur.

ERRCODE_UNTRANSLATABLE_CHARACTER

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

  • Cause : Un caractère UTF-8 n'a pas d'équivalent dans l'encodage GBK cible.

  • Solution : Nettoyez les données invalides.

ERRCODE_GROUPING_ERROR

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

  • Cause : Une colonne non agrégée dans la liste SELECT n'est pas incluse dans la clause GROUP BY. Toutes les colonnes de la liste SELECT doivent soit figurer dans GROUP BY, soit être utilisées dans une fonction d'agrégation.

  • Solution : Ajoutez la colonne à la clause GROUP BY ou utilisez-la dans une fonction d'agrégation.

ERRCODE_INVALID_TRANSACTION_STATE

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

  • Cause : Les instructions CREATE TABLE et call set_table_property ne se trouvent pas dans la même transaction.

  • Solution : Regroupez les instructions CREATE TABLE et toutes les instructions call set_table_property dans le même bloc de transaction. Exemple :

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

ERRCODE_AMBIGUOUS_COLUMN

Erreur : column reference "xxx" is ambiguous

  • Cause : Le nom de la colonne dans une requête JOIN est ambigu car il existe dans plusieurs tables. Par exemple, dans SELECT id FROM t1 INNER JOIN t2 ON t1.id=t2.id , id dans la clause SELECT est ambigu car il peut faire référence à t1 ou à t2 .

  • Solution : Qualifiez la colonne avec le nom de la table ou un alias (par exemple, t1.id ).

ERRCODE_DUPLICATE_COLUMN

Erreur : column "xxx" specified more than once

  • Cause : Un nom de colonne apparaît plusieurs fois dans une instruction CREATE TABLE.

  • Solution : Supprimez la colonne en double de l'instruction CREATE TABLE.

ERRCODE_AMBIGUOUS_FUNCTION

Cette erreur se produit lorsqu'un appel de fonction correspond à plusieurs surcharges et que la base de données ne peut pas déterminer laquelle utiliser. Pour résoudre ce problème, castiez explicitement les arguments vers les types de données souhaités.

ERRCODE_INVALID_COLUMN_DEFINITION

Erreur : invalid definition of a numeric type

  • Cause : Une colonne NUMERIC ou DECIMAL a été définie sans spécifier sa précision.

  • Solution : Spécifiez la précision pour la colonne NUMERIC ou DECIMAL, telle que NUMERIC(38, 18) .

ERRCODE_CANNOT_COERCE

Erreur : cannot cast type date to integer

  • Cause : Le type DATE ne peut pas être converti en type INTEGER.

  • Solution : Modifiez la syntaxe SQL pour utiliser une conversion de type valide.

ERRCODE_UNDEFINED_SCHEMA ou ERRCODE_INVALID_SCHEMA_NAME

Erreur : schema "xxxx" does not exist

  • Cause : Le schéma n'existe pas dans la base de données.

  • Solution : Vérifiez que le nom du schéma dans l'instruction SQL est correct ou créez d'abord le schéma.

ERRCODE_INTERNAL_ERROR

Indique une erreur interne inattendue.

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

  • Cause : L'instance Hologres n'est pas disponible ou ne répond pas.

  • Solution : Ouvrez un ticket de support pour enquêter sur l'indisponibilité de l'instance Hologres.

Erreur : too many shards in this instance

  • Cause : Le nombre de shards spécifié dépasse la limite totale de shards de l'instance.

  • Solution : Vérifiez la limite de shards pour votre instance et réduisez le nombre de shards en conséquence. Pour plus de détails, reportez-vous à Gestion des instances.

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

  • Cause : Les opérations d'écriture (INSERT, UPDATE, DELETE) ne sont pas prises en charge sur une instance secondaire (réplica en lecture).

  • Solution : Effectuez les opérations d'écriture sur l'instance principale. Les instances secondaires prennent en charge uniquement les requêtes SELECT.

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

  • Cause : L'instance a atteint sa limite maximale de connexions. Seules les connexions superutilisateur sont autorisées.

  • Solution : Utilisez un compte superutilisateur pour libérer les connexions inactives. Pour plus de détails, reportez-vous à la section Gérer les connexions.

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

  • Cause : La requête fait référence à des colonnes de tables système avec des types de données complexes que Hologres ne prend pas en charge.

  • Solution : Évitez de joindre des tables système avec des types de colonnes complexes dans les requêtes Hologres.

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

  • Cause : Les opérations DDL, telles que la modification de la liste blanche d'adresses IP, ne peuvent pas être effectuées sur une instance secondaire.

  • Solution : Modifiez la liste blanche d'adresses IP sur l'instance principale.

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

  • Cause : Une commande dans une transaction a échoué et des commandes ultérieures ont été émises avant de revenir en arrière ou de terminer la transaction. Exemple :

    begin;
    create xxxx
    
    begin;
  • Solution : Exécutez la commande rollback; pour mettre fin à la transaction actuelle et annuler toutes les modifications non validées.

Erreur : query length xxxxx exceeded the maximum 102400

  • Cause : La longueur de la requête dépasse la limite de 102 400 octets.

  • Solution : Réécrivez la requête pour vous assurer que sa longueur reste dans la limite spécifiée.

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

  • Cause : Cette erreur se produit lors de l'écriture de données avec Flink en mode de mise à jour dans une table qui ne possède pas de clé primaire.

  • Solution : Définissez une clé primaire appropriée pour la table de destination. Pour plus de détails, reportez-vous à Clé primaire.

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

  • Cause : La fonction s'exécute dans le moteur Hologres, mais les requêtes de tables système contournent le moteur. La fonction ne peut pas être évaluée en dehors du contexte du moteur.

  • Solution : N'utilisez pas cette fonction dans les requêtes portant sur les tables système Hologres.

Gérer les noms de colonnes commençant par un chiffre

Étant donné que Hologres est compatible avec PostgreSQL, les noms de colonnes commençant par un chiffre doivent être entourés de guillemets doubles (" ).

Si un nom de colonne commence par un chiffre, vous devez l'entourer de guillemets doubles dans votre requête, comme indiqué dans l'exemple suivant :

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

Erreur : cannot drop table because other objects depend on it

  • Cause : La table possède des objets dépendants, tels que des vues qui y font référence.

  • Solution : Supprimez d'abord les objets dépendants, puis supprimez la table.

Erreur : BinaryArray cannot contain more than 2147483646 bytes

  • Cause

    Lorsque les statistiques de table sont obsolètes, l'optimiseur peut choisir un plan d'exécution sous-optimal pour une jointure multi-tables, ce qui fait que la taille totale d'une seule colonne au sein d'un lot dépasse 2 Go et déclenche cette erreur.

  • Solution

    Exécutez la commande suivante sur les tables impliquées dans la jointure pour mettre à jour leurs statistiques :

    analyze <tablename>;

    Si l'erreur persiste après la mise à jour des statistiques, les données peuvent contenir des valeurs de colonne très volumineuses. Ajoutez le paramètre GUC suivant avant l'instruction SQL :

    set hg_experimental_query_batch_size = 1024;

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

  • Cause et solution

    • Cause 1 : Lorsque les statistiques de table sont obsolètes, un plan d'exécution sous-optimal peut entraîner le dépassement de la taille totale d'une seule colonne au sein d'un lot au-delà de 2 Go, déclenchant ainsi cette erreur.

      Solution : Exécutez la commande analyze sur la table pour mettre à jour ses statistiques.

      analyze <tablename>;
    • Cause 2 : La taille des données dans une colonne de table dépasse 2 Go.

      Solution : Ajoutez le paramètre GUC suivant avant l'instruction SQL pour réduire la taille du lot lu par chaque requête :

      set hg_experimental_query_batch_size = 1024;

Erreur : internal error: Sequence is used out

  • Cause : Une colonne de type serial a épuisé ses valeurs de séquence auto-incrémentielle.

  • Solution :

    • Si vous utilisez le type serial, recréez la table et modifiez le type de colonne en bigserial.

    • L'écriture dans une colonne serial acquiert un verrou de table et peut réduire la concurrence. Envisagez d'éviter le type serial si possible.

Ajouter des sauts de ligne dans les résultats de requête SQL

Dans Hologres, pour insérer des sauts de ligne dans les résultats de requête SQL, utilisez la syntaxe de chaîne d'échappement avec le préfixe E . Dans les chaînes régulières, \n ou \r\n sont traités comme des caractères littéraux et ne produisent pas de sauts de ligne.

  • Exemples

    -- Incorrect: does not produce a line break.
    SELECT STRING_AGG(name, '\r\n') FROM t1;
    
    -- Correct: use an escape string constant with the E prefix.
    SELECT STRING_AGG(name, E'\r\n') FROM t1;
    
    -- You can also use \n only.
    SELECT STRING_AGG(name, E'\n') FROM t1;
  • Description

    Hologres est compatible avec la syntaxe PostgreSQL. Dans PostgreSQL, les chaînes préfixées par E (telles que E'\n' ) prennent en charge les séquences d'échappement de style C. Dans ces séquences, \n représente un caractère de nouvelle ligne et \r représente un retour chariot.

Que faire si la fonction NOW() renvoie une heure retardée ?

Dans Hologres, la fonction NOW() renvoie l'heure de début de la transaction actuelle, et non l'horloge système en temps réel. Si la requête s'exécute au sein d'une transaction de longue durée ou si la connexion est réutilisée via un pool de connexions, l'heure renvoyée peut être en retard par rapport à l'heure système réelle.

Pour obtenir l'horloge système en temps réel actuel, utilisez plutôt la fonction CLOCK_TIMESTAMP() . Contrairement à NOW() , CLOCK_TIMESTAMP() renvoie l'heure précise au moment de chaque invocation et n'est pas affectée par l'heure de début de la transaction.

L'instruction DELETE prend-elle en charge les sous-requêtes comme sélecteurs de partition dynamiques ?

Non. Dans Hologres, l'élagage des partitions nécessite que les conditions de partition utilisent des valeurs statiques ou des valeurs liées paramétrées. Les sous-requêtes et les expressions dynamiques ne sont pas prises en charge comme sélecteurs de partition, tels que WHERE ds = (SELECT MAX(ds) FROM ...) .

L'utilisation d'une sous-requête comme condition de partition entraîne l'échec de l'élagage des partitions, ce qui peut provoquer une analyse complète de la table avec une dégradation significative des performances. Pour éviter ce problème, interrogez d'abord la valeur de partition et stockez-la dans une variable, puis utilisez la valeur statique dans l'instruction DELETE.

Comment éviter les erreurs de l'optimiseur ORCA sans modifier les paramètres GUC ?

Vous ne pouvez pas résoudre ce problème connu en réécrivant simplement les instructions SQL. Pour corriger les erreurs de l'optimiseur ORCA, mettez à niveau l'instance Hologres vers la version 4.0 ou ultérieure.

Pourquoi une nouvelle instance signale-t-elle des erreurs ou rencontre-t-elle des problèmes de performances alors que l'ancienne instance fonctionne normalement ?

Les nouvelles et anciennes instances Hologres peuvent se comporter différemment en raison des différences de version, de la capacité de calcul et des variations de charge de travail. Une nouvelle instance peut utiliser une version de moteur différente avec des règles de validation plus strictes ou des configurations par défaut modifiées. De plus, la capacité de calcul et le profil de charge de la nouvelle instance peuvent différer de ceux de l'ancienne instance.

Pour résoudre les problèmes de compatibilité et de performance sur les nouvelles instances, effectuez une mise à niveau vers la dernière version stable de Hologres.

Erreur : ERROR: tables can have at most 6400 columns

  • Cause : Hologres limite chaque table à un maximum de 6400 colonnes. Même après avoir supprimé une colonne avec DROP COLUMN , le nombre de colonnes dans les métadonnées de la table continue de s'accumuler. Des opérations fréquentes de ADD COLUMN et de DROP COLUMN peuvent entraîner le dépassement du nombre total de colonnes de métadonnées au-delà de 6400, déclenchant ainsi cette erreur.

  • Solution :

    • Correction à court terme : Recréez la table et migrez les données. La nouvelle table commence avec un nouveau compteur de colonnes.

    • Recommandation à long terme : Optimisez le schéma de la table en consolidant les colonnes fréquemment modifiées dans une seule colonne JSON pour éviter les opérations répétées ADD/DROP COLUMN.