変換ルールが ApsaraDB RDS for MySQL からデータをプルする必要がある場合、データのプルまたは更新時にエラーが発生する可能性があります。このトピックでは、これらのエラーについて説明し、ソリューションを提供します。
変換エンジンがソース Logstore からデータを読み取り後、ログイベントの変換を開始します。変換ルールが Object Storage Service (OSS)、RDS、またはその他の Logstore などの外部リソースをロードする場合、ロードまたはリフレッシュ中にエラーが発生する可能性があります。
コンソールでのリソース関数の単独使用
変換ルール
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": ""}-
トラブルシューティング方法
このエラーメッセージは、構文構成エラーを示しています。これは、Simple Log Service コンソールで res_rds_mysql、res_log_LogStore_pull、または res_oss_file 関数を単独で使用した場合によく発生します。
ソリューション
リソース関数は Simple Log Service コンソールで単独で使用できないため、e_table_map 関数と組み合わせて使用してください。
無効なパラメータ設定
変換ルール
e_table_map(res_rds_mysql(address="xx",username="xx",password="xx",database="xx"),field="processid",output_fields=["name","xixi"])エラーログ
When sql is not set, table must be set\nDetail: Noneトラブルシューティング方法
table パラメーターまたは sql パラメーターが構成されているか確認してください。
ソリューション
table パラメーターが構成されていない場合は、必要な table を見つけるために SQL ステートメントを指定する必要があります。この状況で SQL ステートメントを指定しないと、必要な table が見つからず、データをプルできません。table パラメーターと sql パラメーターのいずれかを構成する必要があります。
無効な出力フィールド
変換ルール
e_table_map(res_rds_mysql(address="x",username="xx",password="xx",database="xx",table="test"),field="processid",output_fields=["name","xixi"])エラーログ
trans_comp_lookup: output field xixi doesn't exist in lookup table\nDetail: Noneトラブルシューティング方法
output_fields パラメーター内のフィールドが、必要な table に存在しません。
ソリューション
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"])エラーログ
username not a string type\nInvalid Settingsトラブルシューティング方法
username パラメーターの値が文字列型ではありません。
ソリューション
正しいデータの型を構成してください。
ネットワークまたは権限エラー
変換ルール
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 'user1'@'192.0.2.1' (using password: YES)")エラーログ 2
message: Database connection failed, cause: (1049, "Unknown database 'test999')トラブルシューティング方法
構成が有効であるか、ネットワークが接続されているか、または必要な ApsaraDB RDS for MySQL インスタンスにホワイトリストが構成されているか確認してください。接続エラーが発生した場合、エラーログの cause フィールドにエラーの詳細な原因が含まれています。原因に基づいてエラーをトラブルシューティングできます。一般的なエラーには、権限不足、パスワードの誤り、無効なアドレスなどがあります。
ソリューション
関数を再構成し、データ変換ジョブを再起動してください。
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 ステートメントも、
データフェッチエラーをトリガーする可能性があります。このエラーが発生した場合は、エラーの根本原因を分析してください。 ソリューション
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))トラブルシューティング方法
このエラーは、必要な ApsaraDB RDS for MySQL インスタンスの特定のホワイトリストがクリアされたために発生します。継続的な変換中にネットワーク中断などのエラーが発生した場合、データ変換ジョブは自動的に再試行されます。取り消された権限や誤って削除されたテーブルなどのエラーが発生した場合は、手動で権限を付与するか、テーブルを復元する必要があります。
ソリューション
エラーの原因に基づいて、ApsaraDB RDS for MySQL インスタンス上のデータベースでテーブルまたは権限が変更されたかどうかを確認してください。