Jika aturan transformasi memerlukan penarikan data dari ApsaraDB RDS for MySQL, kesalahan dapat terjadi saat data ditarik atau diperbarui. Topik ini menjelaskan kesalahan tersebut dan menyediakan solusi.
Setelah mesin transformasi data membaca data dari penyimpanan log, mesin tersebut mentransformasi data. Jika aturan transformasi memerlukan penarikan data dari sumber eksternal seperti Object Storage Service (OSS), ApsaraDB RDS, atau penyimpanan log lainnya, kesalahan dapat terjadi selama proses penarikan atau pembaruan data.
Penggunaan fungsi sumber daya yang salah di konsol Layanan Log Sederhana
Aturan Transformasi
res_rds_mysql(address="xx",username="xx",password="xx",database="xx")Log Kesalahan
aliyun.log.logexception.LogException: {"errorCode": "InvalidEtlConfig", "errorMessage": "Konfigurasi ETL tidak lolos pemeriksaan keamanan, detail: tipe tidak valid terdeteksi: <class '_ast.Expr'>", "requestId": ""}Metode Pemecahan Masalah
Kesalahan disebabkan oleh sintaks yang tidak valid. Hal ini sering terjadi ketika fungsi sumber daya seperti res_rds_mysql, res_log_logstore_pull, atau res_oss_file digunakan secara mandiri di konsol Layanan Log Sederhana.
Solusi
Gunakan fungsi sumber daya bersama dengan fungsi e_table_map karena fungsi sumber daya tidak dapat digunakan secara mandiri di konsol Layanan Log Sederhana.
Pengaturan parameter tidak valid
Aturan Transformasi
e_table_map(res_rds_mysql(address="xx",username="xx",password="xx",database="xx"),field="processid",output_fields=["name","xixi"])Log Kesalahan
Ketika sql tidak disetel, table harus disetel\nDetail: Tidak adaMetode Pemecahan Masalah
Periksa apakah parameter table atau sql telah dikonfigurasi.
Solusi
Jika parameter table tidak dikonfigurasi, tentukan pernyataan SQL untuk menemukan tabel yang diperlukan. Jika tidak ada pernyataan SQL dalam situasi ini, tabel yang diperlukan tidak akan ditemukan, sehingga data tidak dapat ditarik. Pastikan salah satu parameter table atau sql telah dikonfigurasi.
Bidang keluaran tidak valid
Aturan Transformasi
e_table_map(res_rds_mysql(address="x",username="xx",password="xx",database="xx",table="test"),field="processid",output_fields=["name","xixi"])Log Kesalahan
trans_comp_lookup: bidang keluaran xixi tidak ada di tabel pencarian\nDetail: Tidak adaMetode Pemecahan Masalah
Bidang dalam parameter output_fields tidak tersedia di tabel yang diperlukan.
Solusi
Konfirmasikan bidang yang terkandung dalam tabel dan ganti bidang tidak valid dalam parameter output_fields.
Pengaturan tipe parameter tidak valid
Aturan Transformasi
e_table_map(res_rds_mysql(address="xxx",username=1234,password="xx",database="xx",table="xx"),field="processid",output_fields=["name","xixi"])Log Kesalahan
username bukan tipe string\nPengaturan Tidak ValidMetode Pemecahan Masalah
Nilai parameter username bukan tipe string.
Solusi
Tentukan nilai dengan tipe string.
Kesalahan jaringan atau izin
Aturan Transformasi
e_table_map(res_rds_mysql(address="xxx",username=xxx,password="xx",database="test999",table="xx"),field="processid",output_fields=["name","xixi"])Log Kesalahan 1
pesan: Koneksi database gagal, penyebab: (1045, "Akses ditolak untuk pengguna 'user1'@'192.0.2.1' (menggunakan kata sandi: YA)")Log Kesalahan 2
pesan: Koneksi database gagal, penyebab: (1049, "Database tidak dikenal 'test999')Metode Pemecahan Masalah
Periksa apakah konfigurasinya valid, jaringan terhubung, atau daftar putih yang diperlukan telah dikonfigurasi pada instance ApsaraDB RDS for MySQL. Jika terjadi kesalahan koneksi, bidang cause dalam log kesalahan berisi penyebab rinci dari kesalahan. Anda dapat menganalisis kesalahan berdasarkan penyebabnya. Kesalahan umum meliputi kurangnya izin, kata sandi salah, dan alamat tidak valid.
Solusi
Konfigurasikan ulang fungsi dan mulai ulang pekerjaan transformasi data.
Kesalahan sintaks SQL
Aturan Transformasi
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"]))Log Kesalahan
\"errorMessage\": \"Bidang sql_query hanya mendukung sintaks kueri database\\nPengaturan Tidak Valid \\\"insert into test values(1,aini)\\\"\\nDetail: Tidak ada\", \"requestId\": \"\"}Metode Pemecahan Masalah
Sintaks SQL tidak valid. Periksa bahwa sintaks SQL yang digunakan untuk membaca dan menulis data ke database valid. Jika ditemukan kesalahan dalam sintaks SQL yang digunakan untuk menulis data ke database, kesalahan
fetch data errormungkin terjadi. Dalam situasi ini, analisis penyebab kesalahan.Solusi
Perbaiki sintaks SQL. Fungsi sumber daya hanya mendukung SELECT.
Kesalahan selama transformasi berkelanjutan
Aturan Transformasi
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))Log Kesalahan
\"errorMessage\": \"Koneksi database gagal, penyebab: (2003, \\\"Tidak dapat terhubung ke server MySQL di 'rm-wz9z68i4itrk4v8d9yo.mysql.rds.aliyuncs.com' (habis waktu))Metode Pemecahan Masalah
Kesalahan terjadi karena daftar putih tertentu dari instance ApsaraDB RDS for MySQL yang diperlukan dihapus. Jika terjadi kesalahan seperti gangguan jaringan selama transformasi berkelanjutan, pekerjaan transformasi data akan dicoba ulang secara otomatis. Jika terjadi kesalahan seperti izin yang dicabut atau tabel yang dihapus secara salah, berikan izin secara manual atau pulihkan tabel.
Solusi
Periksa apakah tabel atau izin diubah di database pada instance ApsaraDB RDS for MySQL berdasarkan penyebab kesalahan.