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_mysql
、res_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 でテーブルまたはユーザー権限が変更されているかどうかを確認します。