當來源資料庫中存在資料表時,如何針對我的 AWS DMS 任務的 "ERROR: No tables were found at task initialization" (錯誤:在任務初始化時找不到資料表) 錯誤進行疑難排解?

上次更新日期:2022 年 07 月 27 日

當我嘗試使用 AWS Database Migration Service (AWS DMS) 遷移資料時,收到 "ERROR: No tables were found at task initialization" (錯誤:在任務初始化時找不到資料表) 的錯誤訊息。但是,資料表存在於我的來源資料庫中。為什麼我會收到此錯誤,以及該如何解決問題?

簡短描述

會收到 "No tables were found at task initialization" (在任務初始化時找不到資料表) 錯誤可能有幾個原因,視您使用的資料庫引擎而定。AWS DMS 支援作為來源使用的某些資料庫引擎會區分大小寫,例如 Oracle 或 DB2。因此,當您使用 Oracle 或 DB2 作為 AWS DMS 的來源時,您的資料表名稱、檢視名稱和資料欄名稱必須使用大寫字母。

相較之下,MySQL 和 PostgreSQL 之類的資料庫引擎預設為對所有物件使用小寫字母。如需詳細資訊,請參閱使用來源篩選條件

AWS DMS 映射規則和端點設定旨在與各種來源引擎搭配使用,因此區分大小寫。如果 AWS DMS 任務中指定的物件名稱與來源資料庫名稱不同,則 AWS DMS 任務會失敗並擲回 "No tables were found at task initialization" (在任務初始化時找不到資料表) 錯誤。

解決方案

若要解決此錯誤:

1.FSF 確定資料表存在於來源中,且在任務開始之前未被刪除。

2.FSP 如果資料表存在於來源中,請確定物件名稱與來源資料庫名稱完全相符。

例如,當您使用 Oracle 資料庫作為來源時,Oracle 會使用如下的物件名稱:

  • 來源資料庫 SID:ORCL – 使用此選項來設定 Oracle 來源端點資料庫名稱。
  • 來源資料庫架構名稱:ADMIN – 使用此選項來選擇映射規則。
  • 來源資料庫資料表名稱:TEST – 使用此選項來選擇對映規則。

此範例在映射規則中使用小寫物件名稱,並以 Oracle 作為來源。但因為 Oracle 需要大寫物件名稱,所以 AWS DMS 任務會失敗,並顯示 "No tables were found at task initialization" (在任務初始化時找不到資料表) 錯誤。

{
  "rules": [
    {
      "rule-type": "selection",
      "rule-id": "1",
      "rule-name": "1",
      "object-locator": {
        "schema-name": "admin",
        "table-name": "test"
      },
      "rule-action": "include",
      "filters": [

      ]
    }

此範例在映射規則中使用大寫物件名稱,並以 Oracle 作為來源,故 AWS DMS 任務不會失敗。

{
  "rules": [
    {
      "rule-type": "selection",
      "rule-id": "1",
      "rule-name": "1",
      "object-locator": {
        "schema-name": "ADMIN",
        "table-name": "TEST"
      },
      "rule-action": "include",
      "filters": [

      ]
    }

此文章是否有幫助?


您是否需要帳單或技術支援?