Logstore のデータ変換ルールも ApsaraDB for RDS からデータをプルする場合、データのプルまたは更新エラーが発生する可能性があります。 このトピックでは、そのようなエラーとそれに対応する解決策を紹介します。

ログストアからデータを読み取った後、データ変換エンジンはログストアのログイベントの変換を開始します。 変換ルールが Object Storage Service(OSS)、ApsaraDB for RDS、およびその他の Logstores などの外部リソースからのデータのプルを含む場合、データのプルまたは更新エラーが発生する可能性があります。

コンソールでの不適切なリソース関数の使用

  • 変換ルール
    res_rds_mysql(address="xx",username="xx",password="xx",database="xx")
  • エラーメッセージ
    aliyun.log.logexception.LogException: {"errorCode": "InvalidEtlConfig", "errorMessage": "ETL config doesn't pass security check, detail: invalid type detected: <class '_ast.Expr'>", "requestId": ""}
  • 原因

    このエラーは、構文が正しくない場合に発生します。 コンソールでres_rds_mysqlres_log_logstore_pull または res_oss_file 構文を単独で使用するとエラーが発生する可能性があります。

  • 解決方法

    コンソールで、リソース構文と e_table_map または e_search_table_map 構文を一緒に使用します。

不適切なパラメーター設定

  • 変換ルール
    e_table_map(res_rds_mysql(address="xx",username="xx",password="xx",database="xx"),field="processid",output_fields=["name","xixi"])
  • エラーメッセージ
    "errorMessage\": \"When sql is not set, table must be set\\nDetail: None\"
  • 原因

    table および sql パラメーターが設定されていないときにこのエラーが発生します。

  • 解決方法

    table パラメーターを設定しない場合は、sqlパラメーターを設定します。 sql パラメーターを設定しない場合、table パラメーターを設定します。

不適切な出力フィールド

  • 変換ルール
    e_table_map(res_rds_mysql(address="x",username="xx",password="xx",database="xx",table="test"),field="processid",output_fields=["name","xixi"])
  • エラーメッセージ
    "errorMessage\": \"trans_comp_lookup: output field xixi doesn't exist in lookup table\\nDetail: None\
  • 原因

    このエラーは output_fields 設定が ApsaraDB RDS for MySQL のテーブルに保存されていないために発生します。

  • 解決方法

    MySQL データベースに含まれているフィールドを確認してから、正しいフィールドを output_fields パラメーターに入力してください。

不適切なパラメータータイプ設定

  • 変換ルール
    e_table_map(res_rds_mysql(address="xxx",username=1234,password="xx",database="xx",table="xx"),field="processid",output_fields=["name","xixi"])
  • エラーメッセージ
    "errorMessage\": \"username not a string type\\nInvalid Settings
  • 原因

    指定された ユーザー名 が文字列でないときにこのエラーが発生します。

  • 解決方法

    正しいパラメータタイプを設定します。

ネットワークまたは権限エラー

  • 変換ルール
    e_table_map(res_rds_mysql(address="xxx",username=xxx,password="xx",database="test999",table="xx"),field="processid",output_fields=["name","xixi"])
  • エラーメッセージ 1
    message:  Database connection failed, cause: (1045, "Access denied for user 'root'@'47.99.57.53' (using password: YES)"
  • エラーメッセージ 2
    message:  Database connection failed, cause: (1049, "Unknown database 'test999')
  • 原因
    Database connection failed というエラーは、ネットワーク設定が正しくないか、ネットワークが切断されているか、またはアカウントが ApsaraDB RDS for MySQL のホワイトリストにない場合に発生します。 接続障害が発生した場合、原因はエラーメッセージに含まれます。 原因としては、権限エラー、不正なパスワード、または不正な IP アドレスが考えられます。
    VPC は ApsaraDB RDS for MySQL に接続できません。 VPC の IP アドレスが変換ルールに含まれている場合、ネットワーク接続障害が発生します。 address パラメーターは、ApsaraDB RDS for MySQL のパブリック IP アドレスに設定する必要があります。 ApsaraDB RDS for MySQL へのVPC 接続は開発中です。
  • 解決方法

    関数パラメーターを変更して、データ変換タスクを再開してください。

SQL 構文エラー

  • 変換ルール
    e_table_map(res_rds_mysql(address="xxx",username=xxx,password="xx",database="xx",sql="inset into test values(1,"aini")",field="processid",output_fields=["name","xixi"])
  • エラーメッセージ
    "errorMessage\": \"The sql_query field only supports database query syntax\\nInvalid Settings \\\"insert into test values(1,aini)\\\"\\nDetail: None\", \"requestId\": \"\"}
  • 原因

    このエラーは、指定された SQL 構文が正しくない場合に発生します。 SQL 構文は、SELECT ステートメントを使用したデータベースからのデータの読み取りのみをサポートします。 SELECT ステートメントが間違っている場合、エラーの原因を示す fetch data errorメッセージが報告されます。

  • 解決方法

    SQL ステートメントのエラーを修正します。 SELECT ステートメントのみが使用されていることを確認してください。

連続変換エラー

  • 変換ルール
    e_table_map(res_rds_mysql(address="xxx",username=xxx,password="xx",database="xx",table="test,field="processid",output_fields=["name","xixi"],refresh_interval=30)
  • エラーメッセージ
    "errorMessage\": \"Database connection failed, cause: (2003, \\\"Can't connect to MySQL server on 'rm-wz9z68i4itrk4v8d9yo.mysql.rds.aliyuncs.com' (timed out)
  • 原因

    このエラーは、データ変換に使用される IP アドレスが ApsaraDB RDS for MySQL のホワイトリストから削除されるために発生します。 連続変換中にエラー (ネットワーク接続の障害など) が発生した場合、自動で再試行が行われます。 アクセス権限が削除された場合は、手動で再付与する必要があります。 報告されたエラーメッセージに基づいて、接続エラーの原因究明ができます。

  • 解決方法

    ApsaraDB RDS for MySQL でテーブルまたはユーザー権限が変更されているかどうかを確認します。