全部产品
Search
文档中心

Simple Log Service:Bagaimana cara memperbaiki kesalahan sintaks yang terjadi saat saya menarik data dari ApsaraDB RDS for MySQL?

更新时间:Jun 26, 2025

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 ada
  • Metode 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 ada
  • Metode 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 Valid
  • Metode 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 error mungkin 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.