このトピックでは、Hologres の一般的なエラーコードに関するよくある質問への回答を提供します。また、ビジネス担当者が問題を迅速に特定し、トラブルシューティングを実行するためのソリューションも提供します。
HG_ERRCODE_FDW_ERROR
次のエラーメッセージが表示された場合はどうすればよいですか: failed to import foreign schema from odps: Can't find file system factory?
原因: Hologres は MaxCompute 外部テーブルのクエリをサポートしていません。
解決策: MaxCompute 内部テーブルを作成します。
ERRCODE_FDW_ERROR
次のエラーメッセージが表示された場合はどうすればよいですか: failed to import foreign schema from odps: Authorization Failed: xxx?
原因: アカウントに MaxCompute テーブルに必要な権限がありません。
解決策: ユーザーアカウントに必要な権限を付与します。詳細については、「コマンドを使用したユーザー権限の管理」をご参照ください。
次のエラーメッセージが表示された場合はどうすればよいですか: failed to import foreign schema from odps:Table not found -xxx?
原因: クエリ対象のテーブルが MaxCompute に存在しません。
解決策: MaxCompute にテーブルが存在するかどうかを確認します。
ERRCODE_UNIQUE_VIOLATION or pk violates
次のエラーメッセージが表示された場合はどうすればよいですか: Update row with Key (id)=(xxxx) multiple times or duplicate key value violates unique constraint?
原因: 一意性制約違反が存在します。UPDATE、INSERT ON CONFLICT、または INSERT 操作を実行すると、一部の主キー値が重複しています。
解決策:
INSERT 操作の実行時にエラーメッセージが報告された場合は、
INSERT INTO xx ON CONFLICT
構文を使用してプライマリキー値の重複を削除します。詳細については、「INSERT ON CONFLICT(UPSERT)」をご参照ください。INSERT INTO xx ON CONFLICT
構文の使用時にエラーメッセージが報告された場合、データソースに重複データが含まれています。この場合、「INSERT ON CONFLICT(UPSERT)」の「エラーとトラブルシューティング」セクションの手順に従ってトラブルシューティングを実行します。もう 1 つの理由は、テーブルに Time to live (TTL) が設定されていることです。TTL の期限が切れていますが、データは削除されていません。この場合は、hg_remove_duplicated_pk 関数を使用してデータを削除します。詳細については、「INSERT ON CONFLICT(UPSERT)」の「エラーとトラブルシューティング」セクションをご参照ください。
ERRCODE_CHECK_VIOLATION or partition constraint
次のエラーメッセージが表示された場合はどうすればよいですか: ERROR: new row for relation violates partition constraint?
原因: チェック制約違反が存在します。書き込まれるデータレコードのパーティションキー値が、ステートメントで指定されたパーティションキー値と異なります。たとえば、ステートメントで指定されたパーティションキー値は 20240110 ですが、異なるパーティションキー値を持つデータレコードが書き込まれます。これにより、パーティションの競合が発生します。ステートメントの例:
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
解決策: 有効なデータレコードをパーティションに書き込みます。
ERRCODE_NOT_NULL_VIOLATION, not-null constraint, or UsageProblem
次のエラーメッセージが表示された場合はどうすればよいですか: null value in column "xxx" violates not-null constraint?
原因: NOT NULL 制約違反が存在します。NULL 値が NOT NULL 列に書き込まれます。
解決策: NULL 値を削除し、データを書き直します。
ERRCODE_UNDEFINED_TABLE
次のエラーメッセージが表示された場合はどうすればよいですか: Dispatch query failed: Table not found?
原因: テーブルが存在しません。ほとんどの場合、このエラーメッセージは、テーブルは作成されたがメタデータが更新されていない場合、またはクエリ中にテーブルに対して TRUNCATE または DROP 操作が実行された場合に報告されます。
解決策: HoloWeb のクエリインサイト機能を使用して、クエリ中にテーブルに対して TRUNCATE または DROP 操作が実行されたかどうかを確認します。次に、クエリを再試行します。詳細については、「クエリインサイト」をご参照ください。クエリ中に競合を引き起こす可能性のある DDL ステートメントを実行しないでください。
ERRCODE_QUERY_CANCELED or Query Is Cancelled
次のエラーメッセージが表示された場合はどうすればよいですか: ERROR: canceling statement due to statement timeout?
原因: クライアントでタイムアウト期間が設定されており、クエリがタイムアウトしました。
解決策: クエリを最適化して実行時間を短縮するか、タイムアウト期間をより大きな値に設定します。タイムアウト期間の設定方法の詳細については、「クエリの管理」をご参照ください。
次のエラーメッセージが表示された場合はどうすればよいですか: ERROR: Query:[xxx] Get result failed: canceling statement due to user request?
原因: クエリがキャンセルされました。ほとんどの場合、このエラーメッセージは、テーブルに対して TRUNCATE または DROP 操作が実行された場合に報告されます。
解決策: HoloWeb のクエリインサイト機能を使用して、クエリと競合する DDL ステートメントが実行されているかどうかを確認します。詳細については、「クエリインサイト」をご参照ください。クエリ中に競合を引き起こす可能性のある DDL ステートメントを実行しないでください。
次のエラーメッセージが表示された場合はどうすればよいですか: query is cancelled Cannot find index full ID:xxx (table id: x, index id: x) in storages or it is deleting?
原因: TRUNCATE または DROP 操作が実行されたテーブルでクエリが実行されています。その結果、テーブル ID が変更され、クエリがキャンセルされます。
解決策: クエリインサイト機能を使用して、クエリ中に TRUNCATE または DROP 操作が実行されたかどうかを確認します。詳細については、「クエリインサイト」をご参照ください。
ERRCODE_FEATURE_NOT_SUPPORTED or Unsupported Feature
次のエラーメッセージが表示された場合はどうすればよいですか: Feature not supported: insert into parent table?
原因: 親パーティションテーブルにデータを直接書き込むことはできません。
解決策: INSERT ステートメントを実行するときは、指定された子パーティションテーブルにデータを書き込みます。詳細については、「CREATE PARTITION TABLE」をご参照ください。
次のエラーメッセージが表示された場合はどうすればよいですか: SELECT INTO is not supported now?
原因: Hologres は SELECT INTO 構文をサポートしていません。
解決策: INSERT INTO SELECT ステートメントを実行してデータを挿入します。詳細については、「INSERT」をご参照ください。
次のエラーメッセージが表示された場合はどうすればよいですか: ALTER TABLE CHANGE OWNER is not supported in SLPM (Schema-Level Permission Mode)?
原因: テーブルにスキーマレベル権限モデル (SLPM) を使用している場合、ALTER TABLE ステートメントを実行してテーブル所有者を変更することはできません。
解決策: SLPM では、テーブル所有者の権限はユーザーグループに付与されます。ユーザーから権限を取り消すには、ユーザーグループからユーザーを削除します。詳細については、「SLPM の使用」の「ユーザーグループからユーザーを削除する」セクションをご参照ください。
次のエラーメッセージが表示された場合はどうすればよいですか: Feature not supported: INSERT ON CONFLICT RETURNING?
原因:Hologres は
INSERT ON CONFLICT RETURNING
構文をサポートしていません。解決策:
INSERT ON CONFLICT
を使用します。詳細については、「INSERT ON CONFLICT(UPSERT)」をご参照ください。
次のエラーメッセージが表示された場合はどうすればよいですか: ERROR: INSERT in ddl transaction is not supported now?
原因: トランザクションでは INSERT 操作はサポートされていません。サンプルコード:
BEGIN; INSERT xxx commit; ERROR: INSERT in ddl transaction is not supported now
解決策: トランザクション外で INSERT 操作を実行するか、データ操作言語 (DML) ステートメントをサポートするトランザクションを開始します。詳細については、「SQL トランザクション機能」をご参照ください。
次のエラーメッセージが表示された場合はどうすればよいですか: Creating publication with table that without binlog is not supported now?
原因: バイナリロギングが有効になっていないテーブルのパブリケーションが作成されています。
解決策: パブリケーションは、バイナリログをサブスクライブするために使用されます。バイナリロギングが有効になっているテーブルに対してのみパブリケーションを作成できます。詳細については、「JDBC を使用した Hologres バイナリログの利用」をご参照ください。
次のエラーメッセージが表示された場合はどうすればよいですか: Feature not supported: INSERT on conflict contains un-unique column?
原因: INSERT ON CONFLICT ステートメントの CONFLICT 句に、主キー以外の列が指定されています。
解決策: INSERT ON CONFLICT ステートメントの CONFLICT 句に主キー列のみが指定されていることを確認します。
次のエラーメッセージが表示された場合はどうすればよいですか: Feature not supported: UPDATE with shard keys?
原因: Hologres は、主キーまたは配布キーに対する UPDATE 操作をサポートしていません。
解決策: SQL ステートメントを変更して、再度実行します。
次のエラーメッセージが表示された場合はどうすればよいですか: time before 1925 not supported?
原因: 時間関連の関数は、デフォルトで 1925 年から 2282 年までの年をサポートしています。範囲外の年の場合、エラーが報告されます。
解決策:to_char、to_date、to_timestamp などの関数を使用する場合は、実行する SQL 文の前に Grand Unified Configuration(GUC)パラメーター
hg_experimental_functions_use_pg_implementation
を設定して時間範囲を拡張します。詳細については、「日付と時刻の関数」をご参照ください。
次のエラーメッセージが表示された場合はどうすればよいですか: Group by key is type of imprecise not supported?
原因: GROUP BY 句で指定されたフィールドは、近似数値型です。
解決策: GROUP BY 句では、FLOAT などの近似数値型のフィールドを使用しないでください。
次のエラーメッセージが表示された場合はどうすればよいですか: CREATE TABLE is not supported for current instance?
原因:Hologres 共有クラスタインスタンスまたはセカンダリインスタンスが使用されています。 Hologres 共有クラスタインスタンスのエンドポイントは
hgmc
で始まります。たとえば、hgmc-cn-xxwwwkkk
です。インスタンスエンドポイントは Hologres コンソールで確認できます。 Hologres 共有クラスタインスタンスの場合、外部テーブルは作成できますが、内部テーブルは作成できません。セカンダリインスタンスの場合、データのクエリはできますが、テーブルの作成はできません。解決策:
Hologres 共有クラスターインスタンスを使用する場合は、外部テーブルを作成します。詳細については、「CREATE FOREIGN TABLE」をご参照ください。内部テーブルを作成する場合は、専用の Hologres インスタンスを使用します。
テーブルを作成する場合は、プライマリインスタンスを使用します。
次のエラーメッセージが表示された場合はどうすればよいですか: ALTER TABLE ALTER COLUMN SET TYPE is not supported now?
原因: ALTER TABLE ステートメントを使用して列のデータ型を変更することはできません。
解決策: テーブルを作成し、列のデータ型を変更します。
次のエラーメッセージが表示された場合はどうすればよいですか: ERROR: Currently materialized view does not support aggregate on expressions, only support single column?
原因: 単一のテーブルに基づいて定義されたマテリアライズドビューは、式をサポートしていません。
解決策: 単一のテーブルに基づいて定義されたマテリアライズドビューには式を使用しないでください。詳細については、「SQL ステートメントを使用したマテリアライズドビューの管理」をご参照ください。
次のエラーメッセージが報告された場合の対処方法:ERROR: SELECT rule's target list has too few entries?
原因:リアルタイムマテリアライズドビューは式をサポートしていません。
解決策:リアルタイムマテリアライズドビューには式を使用しないでください。詳細については、「SQL 文を使用したマテリアライズドビューの管理」をご参照ください。
ERRCODE_UNDEFINED_OBJECT
次のエラーメッセージが表示された場合はどうすればよいですか: column xxx does not exist?
原因: 列が存在しません。
解決策: SQL ステートメントを確認します。
次のエラーメッセージが表示された場合はどうすればよいですか: Table group xxx does not exist?
原因: テーブルグループが存在しません。
解決策: テーブルを作成するときに既存のテーブルグループを指定するか、テーブルを作成する前にテーブルグループを作成します。
次のエラーメッセージが表示された場合はどうすればよいですか: The specified partition does not exist?
原因: データの書き込みまたは更新操作が実行されるパーティションが存在しません。
解決策: 必要なパーティションを事前に作成します。
次のエラーメッセージが表示された場合はどうすればよいですか: create binlog reader failed: Fail to find any shards, please check if the table group is in current warehouse?
原因: テーブルグループがウェアハウスに存在しません。
解決策: 関連するテーブルグループがウェアハウスにロードされているかどうかを確認します。テーブルグループがウェアハウスにロードされていない場合は、テーブルグループを設定してロードします。詳細については、「仮想ウェアハウスにロードされたテーブルグループの権限の管理」をご参照ください。
ERRCODE_INSUFFICIENT_PRIVILEGE or permission denied
権限関連のエラーの詳細については、次のトピックをご参照ください。
ERRCODE_OUT_OF_MEMORY or OOM
次のエラーメッセージが表示された場合はどうすればよいですか: Total memory used by all existing queries exceeded memory limitation?
原因: クエリ中にメモリ不足 (OOM) の問題が発生しました。
解決策: 詳細については、「OOM に関する FAQ」をご参照ください。
ERRCODE_DATATYPE_MISMATCH
次のエラーメッセージが表示された場合はどうすればよいですか: internal error: Datasets has different schema?
原因: クエリステートメントで指定された列が、テーブルの列と一致しません。
解決策: SQL ステートメントを確認します。
ERRCODE_DIVISION_BY_ZERO
原因: SQL ステートメントでゼロ除算が指定されていますが、これはサポートされていません。
解決策:
ゼロ除算を指定しないでください。CASE WHEN 式を使用してゼロ除算を防ぐこともできます。
MySQL と互換性のある拡張機能を作成し、ゼロ除算を有効にします。詳細については、「MySQL から Hologres へのデータの移行」をご参照ください。
ERRCODE_STRING_DATA_RIGHT_TRUNCATION
次のエラーメッセージが表示された場合はどうすればよいですか: value too long for type character varying(xxx)?
原因: VARCHAR 型のフィールド値の長さが上限を超えています。
解決策: フィールド値を処理するか、VARCHAR 型のフィールド値の長さの上限をより大きな値に設定します。フィールド型を TEXT に変更することもできます。
ERRCODE_PROGRAM_LIMIT_EXCEEDED or Exceed Odps Scan Limit
次のエラーメッセージが表示された場合はどうすればよいですか: Exceeds the partition limitation of 512, current match xxx partitions?
原因: MaxCompute テーブルでクエリされるパーティションの数が 512 を超えています。
解決策: パーティションフィルター条件を追加するか、次の GUC パラメーターを設定して、クエリで許可されるパーティションの最大数を調整します。詳細については、「MaxCompute との統合に関する FAQ」をご参照ください。
set hg_foreign_table_max_partition_limit =xx;
次のエラーメッセージが表示された場合はどうすればよいですか: Build desc failed: Exceeds the scan limitation of 200 GB, current scan xxx GB?
原因: MaxCompute テーブルでスキャンされるデータ量が 200 GB を超えています。
解決策:
フィルター条件を追加して、スキャンされるデータ量を削減します。
データを Hologres 内部テーブルにインポートします。Hologres 内部テーブルでスキャンされるデータ量には上限はありません。
ERRCODE_SYNTAX_ERROR
次のエラーメッセージが表示された場合はどうすればよいですか: syntax error at or near "xxxxx"?
原因: SQL ステートメントの構文が無効です。
解決策: SQL ステートメントの構文を確認して修正します。
ERRCODE_UNDEFINED_FUNCTION
次のエラーメッセージが表示された場合はどうすればよいですか: DISTINCT is not implemented for window functions?
原因: Hologres では、ウィンドウ関数で DISTINCT キーワードを使用することはできません。
解決策: ウィンドウ関数から DISTINCT キーワードを削除します。
次のエラーメッセージが表示された場合はどうすればよいですか: ERROR:function xxx does not exist?
原因: 関数を使用するときに拡張機能が作成されていないか、関数の構文が無効です。
解決策: Hologres の要件に従って関数を使用します。
次のエラーメッセージが表示された場合はどうすればよいですか: ERROR: function jsonb_set(json, text[], jsonb, boolean) does not exist?
原因: JSONB_SET 関数のパラメーターのデータ型が無効です。
解決策: JSONB_SET 関数の最初のパラメーターに JSONB データ型の値を指定します。詳細については、「JSON および JSONB データ型」をご参照ください。
ERRCODE_E_R_E_READING_SQL_DATA_NOT_PERMITTED
次のエラーメッセージが表示された場合はどうすればよいですか: You have NO privilege 'odps:Select' on xxx?
原因: アカウントに MaxCompute テーブルのクエリ権限がありません。
解決策: MaxCompute コンソールでユーザーアカウントに必要な権限を付与します。
次のエラーメッセージが表示された場合はどうすればよいですか: The sensitive label of column 'xxx' is 2, but your effective label is 0?
原因: アカウントには、MaxCompute テーブルの特定の列に対するクエリ権限のみがあります。
解決策: MaxCompute コンソールでユーザーアカウントにさらに権限を付与するか、特定の列からのみデータをクエリします。権限の付与方法の詳細については、「コマンドを使用したユーザー権限の管理」をご参照ください。
ERRCODE_DUPLICATE_OBJECT
次のエラーメッセージが表示された場合はどうすればよいですか: extension "xxxxx" already exists?
原因: 拡張機能は既に存在します。拡張機能を再作成する必要はありません。
ERRCODE_INVALID_TEXT_REPRESENTATION or invalid input
次のエラーメッセージが表示された場合はどうすればよいですか: invalid input syntax for type numeric: \"\"?
原因: NUMERIC 型のフィールドにダーティデータが含まれており、NUMERIC データ型の仕様に準拠していません。
解決策: ダーティデータを処理します。
次のエラーメッセージが表示された場合はどうすればよいですか: invalid input syntax for integer: xxx?
原因: INT 型のフィールドにダーティデータが含まれており、INT データ型の仕様に準拠していません。
解決策: ダーティデータを処理します。
ERRCODE_BAD_COPY_FILE_FORMAT
次のエラーメッセージが表示された場合はどうすればよいですか: missing data for column "xxx". failed to query next?
原因: COPY 操作が実行されるファイルまたはデータの形式が無効です。ほとんどの場合、このエラーメッセージは、ソースデータに COPY ステートメントで指定されたスペースなどの区切り文字が含まれている場合に報告されます。その結果、ソーステーブルの列数が宛先テーブルの列数と異なります。
解決策: ダーティデータを処理します。
ERRCODE_UNDEFINED_COLUMN
次のエラーメッセージが表示された場合はどうすればよいですか: ERROR: INSERT has more expressions than target columns?
原因: INSERT ステートメントを実行して書き込む列の数が、宛先テーブルの列数と一致しません。
解決策: INSERT ステートメントを実行して書き込む列の数が、宛先テーブルの列数と一致していることを確認します。
ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE
次のエラーメッセージが表示された場合はどうすればよいですか: bigint out of range?
原因: BIGINT 型のデータの長さが上限を超えています。
解決策: ダーティデータを処理して、BIGINT 型のデータの長さが上限を超えないようにします。
次のエラーメッセージが表示された場合はどうすればよいですか: numeric field overflow in function round?
原因: NUMERIC 型のフィールドの値が指定された精度を超えています。
解決策: ダーティデータを処理します。
ERRCODE_DATETIME_FIELD_OVERFLOW
次のエラーメッセージが表示された場合はどうすればよいですか: InsertOverwrite insert select table data failed : column a.unsign_type does not exist?
原因: 列が存在しないか、パラメーター値が無効です。
解決策: SQL ステートメントの構文を確認して修正します。
次のエラーメッセージが表示された場合はどうすればよいですか: mismatched properties: table orientation is "column" but storage format is "sst"?
原因: テーブルの作成中に指定されたテーブルプロパティが無効です。列指向のストレージモードが指定されていますが、SST が選択されています。
解決策: SQL ステートメントの構文を確認して修正します。
ERRCODE_INVALID_DATETIME_FORMAT
次のエラーメッセージが表示された場合はどうすればよいですか: invalid value "" for "yyyy", Value must be an integer?
原因: データが特定のデータ型の仕様に準拠していません。
解決策: ダーティデータを処理します。
ERRCODE_CHARACTER_NOT_IN_REPERTOIRE
次のエラーメッセージが表示された場合はどうすればよいですか: invalid byte sequence for encoding "UTF8": 0xe9 0x80?
原因: 特定の文字がエンコーディング形式でサポートされていません。ほとんどの場合、このエラーメッセージは、文字が UTF-8 でサポートされていない場合に報告されます。
解決策: ダーティデータを処理します。
ERRCODE_DUPLICATE_TABLE
次のエラーメッセージが表示された場合はどうすればよいですか: relation "xxxx" already exists?
原因: テーブルは既に存在します。
解決策: 重複するテーブルを作成しないでください。
ERRCODE_UNTRANSLATABLE_CHARACTER
次のエラーメッセージが表示された場合はどうすればよいですか: character with byte sequence 0xe4 0x9e 0xab in encoding "UTF8" has no equivalent in encoding "GBK"?
原因: UTF-8 でエンコードされた文字に、GBK での等価文字がありません。
解決策: ダーティデータを処理します。
ERRCODE_GROUPING_ERROR
次のエラーメッセージが表示された場合はどうすればよいですか: column "xxx" must appear in the GROUP BY clause or be used in an aggregate function?
原因: 列は GROUP BY 句で指定する必要があります。
解決策: SQL ステートメントの構文を変更します。
ERRCODE_INVALID_TRANSACTION_STATE
次のエラーメッセージが表示された場合はどうすればよいですか: SET_TABLE_PROPERTY and CREATE TABLE statement are not in the same transaction for table?
原因: テーブルを作成するときに、CREATE TABLE ステートメントと CALL ステートメントが同じトランザクション内にありません。
解決策: テーブルを作成するときは、CREATE TABLE ステートメントと CALL ステートメントを同じトランザクション内で実行します。サンプルコード:
begin; CREATE TABLE tbl ( xxxx ); call set_table_property('tbl', 'orientation', 'xx'); call set_table_property('tbl', 'distribution_key', 'xxx'); commit;
ERRCODE_AMBIGUOUS_COLUMN
次のエラーメッセージが表示された場合はどうすればよいですか: column reference "xxx" is ambiguous?
原因:ほとんどの場合、このエラーメッセージは、SQL 文の列名が異なるテーブルの列を示している可能性がある場合に報告されます。たとえば、
SELECT id FROM t1 INNER JOIN t2 ON t1.id=t2.id
文では、id
がテーブル t1 の id 列を示すか、テーブル t2 の id 列を示すかが明確ではありません。解決策: SQL ステートメントの構文を変更します。
ERRCODE_DUPLICATE_COLUMN
次のエラーメッセージが報告された場合はどうすればよいですか: 列 "xxx" が複数回指定されています?
原因: テーブル作成ステートメントでフィールドが複数回宣言されています。
解決策: SQL ステートメントの構文を変更します。
ERRCODE_AMBIGUOUS_FUNCTION
関数があいまいになっています。関数はさまざまなデータ型入力パラメーターをサポートしています。ほとんどの場合、このエラーコードは、入力パラメーターのデータ型が定義されていないときに返されます。
ERRCODE_INVALID_COLUMN_DEFINITION
次のエラーメッセージが表示された場合はどうすればよいですか: invalid definition of a numeric type?
原因: テーブルの作成中に NUMERIC 型または DECIMAL 型のフィールドに精度が指定されていません。
解決策: SQL ステートメントの構文を変更し、NUMERIC 型または DECIMAL 型のフィールドに精度を指定します。
ERRCODE_CANNOT_COERCE
次のエラーメッセージが表示された場合はどうすればよいですか: cannot cast type date to integer?
原因: DATE 型のデータを INT 型に変換できません。
解決策: SQL ステートメントの構文を変更します。
ERRCODE_UNDEFINED_SCHEMA or ERRCODE_INVALID_SCHEMA_NAME
次のエラーメッセージが表示された場合はどうすればよいですか: schema "xxxx" does not exist?
原因: スキーマが存在しません。
解決策: SQL ステートメントの構文が有効かどうかを確認します。
ERRCODE_INTERNAL_ERROR
予期しないエラーが報告されました。
次のエラーメッセージが表示された場合はどうすればよいですか: internal error: Connect timeout, err: std_exception: Connection refused?
原因: ほとんどの場合、このエラーメッセージはインスタンスが停止したために報告されます。
解決策: チケットを送信して、Hologres インスタンスの停止の原因を確認します。
次のエラーメッセージが表示された場合はどうすればよいですか: too many shards in this instance?
原因: インスタンスに設定されているシャードの数が上限を超えています。
解決策: 上限より少ないシャード数を設定することをお勧めします。シャード数の設定方法の詳細については、「インスタンス管理」をご参照ください。
次のエラーメッセージが表示された場合はどうすればよいですか: internal error: Write is not allowed in readonly mode?
原因: セカンダリインスタンスでは INSERT、UPDATE、または DELETE 操作を実行できません。
解決策: セカンダリインスタンスでは SELECT 操作のみを実行します。他の操作はプライマリインスタンスで実行します。
次のエラーメッセージが表示された場合はどうすればよいですか: remaining connection slots are reserved for non-replication superuser connections?
原因: 接続数が上限に達しています。その結果、スーパーユーザー以外のアカウントを使用して接続を作成することはできません。
解決策: スーパーユーザーアカウントを使用して、アイドル状態の接続を解放します。詳細については、「接続の管理」をご参照ください。
次のエラーメッセージが表示された場合はどうすればよいですか: Build desc failed: Column type: information_schema.sql_identifier can not translate into hologres type?
原因: 一部のシステムテーブルのフィールド型は複雑で、Hologres ではサポートされていません。
解決策: 複雑なデータ型を持つシステムテーブルと Hologres テーブルで結合クエリを実行しないことをお勧めします。
次のエラーメッセージが表示された場合はどうすればよいですか: ERROR: commit ddl phase1 failed: DDLWrite is not allowed on replica?
原因: セカンダリインスタンスでは IP アドレスホワイトリストを変更できません。
解決策: プライマリインスタンスで IP アドレスホワイトリストを変更します。
次のエラーメッセージが表示された場合はどうすればよいですか: current transaction is aborted, commands ignored until end of transaction block?
原因: 前のトランザクションのステートメントが完了する前にステートメントが実行されています。サンプルコード:
begin; create xxxx begin;
解決策:
rollback;
コマンドを実行して現在のトランザクションを終了し、コミットされていないすべての変更をロールバックします。
次のエラーメッセージが表示された場合はどうすればよいですか: query length xxxxx exceeded the maximum 102400?
原因: クエリの長さが上限の 102,400 バイトを超えています。
解決策: クエリを書き直して、長さを指定された範囲内に収めます。
次のエラーメッセージが表示された場合はどうすればよいですか: Modify record by primary key is not on this table?
原因: Flink を使用してデータを書き込むときに更新モードを指定します。ただし、宛先テーブルには主キーが設定されていません。その結果、データの更新は失敗します。
解決策: 宛先テーブルの主キーを設定します。詳細については、「主キー」をご参照ください。
次のエラーメッセージが表示された場合はどうすればよいですか: ERROR: xxx for fe, should not be evaluated?
原因: ほとんどの場合、このエラーメッセージは、関数を使用してシステムテーブルをクエリするときに報告されます。関数の実行では Hologres エンジンが使用されます。ただし、システムテーブルの計算では Hologres エンジンは使用されません。関数を使用してシステムテーブルで計算を実行する場合、Hologres エンジンは使用されません。
解決策: この関数を Hologres システムテーブルに使用しないことをお勧めします。
SQL ステートメントで数字で始まるフィールド名を指定するにはどうすればよいですか?
Hologres は PostgreSQL と互換性があり、PostgreSQL と同じ構文を使用し、名前が数字で始まるフィールドのクエリをサポートしていません。
フィールドが数字で始まる場合は、フィールドを二重引用符 (") で囲む必要があります。ステートメントの例:
select bizdate,"1_day_active_users","7_day_active_users" from t_active_users;
次のエラーメッセージが表示された場合はどうすればよいですか: cannot drop table because other objects depend on it?
原因: 特定のオブジェクトが、削除するテーブルに依存しています。たとえば、ビューはテーブルに基づいて定義されています。
解決策: テーブルを削除する前に、テーブルに依存するオブジェクトを削除します。
複数のテーブルを結合してデータを書き込んだりクエリしたりするときに次のエラーメッセージが表示された場合はどうすればよいですか: BinaryArray cannot contain more than 2147483646 bytes?
原因:
Hologres のフィールドの最大サイズは 2 GB です。テーブルの統計情報が時間内に更新されない場合、テーブル結合に対して不適切な実行プランが生成されます。その結果、単一フィールドのサイズが 2 GB を超えます。
解決策
次のステートメントを実行して、結合するテーブルの統計情報を更新します。
analyze <tablename>;
テーブルの統計情報を更新した後もエラーが解決しない場合は、テーブルにサイズが 2 GB を超えるフィールドが含まれています。この場合は、データの書き込みまたはクエリに使用する SQL ステートメントの前に次のステートメントを追加します。
set hg_experimental_query_batch_size = 1024;
データのインポートまたはクエリ時に次のエラーメッセージが表示された場合はどうすればよいですか: Cannot reserve capacity larger than 2^31 - 1 for binary?
考えられる原因と解決策
原因 1: Hologres の単一フィールドの最大サイズは 2 GB です。テーブルの統計情報が時間内に更新されない場合、不適切な実行プランが生成されます。その結果、このエラーメッセージが報告されます。
解決策:テーブルで
analyze
文を実行して、テーブルの統計情報を更新します。analyze <tablename>;
原因 2: テーブルのフィールドのデータ量が 2 GB を超えています。その結果、このエラーメッセージが報告されます。
解決策: データのインポートまたはクエリに使用する SQL ステートメントの前に次のステートメントを追加して、毎回読み取るデータ量を削減します。
set hg_experimental_query_batch_size = 1024;
SQL ステートメントの実行時に次のエラーメッセージが表示された場合はどうすればよいですか: internal error: Sequence is used out?
原因: テーブルに SERIAL 型のフィールドが含まれており、フィールドの値が有効な範囲を超えています。
トラブルシューティング方法:
テーブルを作成し、データ型を SERIAL から BIGSERIAL に変更します。
SERIAL データ型を使用しないでください。SERIAL データ型のデータを書き込むと、テーブルロックが取得されます。