How do I troubleshoot "ERROR: No tables were found at task initialization" errors for my AWS DMS task when tables exist in the source database?

3 minute read
0

When I try to migrate my data using AWS Database Migration Service (AWS DMS), I receive an "ERROR: No tables were found at task initialization" error. However, tables are present in my source database.

Short description

There are a couple of reasons why you might receive a "No tables were found at task initialization" error:

  • The AWS DMS mapping rules are incorrectly defined.
  • You don't have the necessary privileges to fetch source tables.

The reason for this error depends on your configuration and the database engine that you use. To resolve the issue, follow the relevant troubleshooting steps for your use case.

Resolution

Mapping rules are incorrectly defined

Some database engines that AWS DMS supports using as a source are case sensitive, such as Oracle or DB2. So, when you use Oracle or DB2 as the source for AWS DMS, your table names, view names, and column names must use uppercase.

In comparison, database engines such as MySQL and PostgreSQL use lowercase for all objects by default. For more information, see Using source filters.

AWS DMS mapping rules and endpoint settings are case sensitive because they must work with a variety of source engines. If the specified object names in an AWS DMS task are different from the source database names, then the task fails.

To resolve this issue, verify the following points:

1.    Make sure that the tables exist in the source and aren't deleted before the task starts.

2.    If the tables exist in the source, then make sure that the object names match the source database name exactly.

For example, when you use an Oracle database as the source, Oracle uses the following example object names:

  • Source database SID: ORCL - Use this to set up the Oracle source endpoint database name.
  • Source database schema name: ADMIN - Use this for the selection mapping rules.
  • Source database table name: TEST - Use this for the selection mapping rules.

The following example uses lowercase object names in the mapping rules with Oracle as the source:

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

Because Oracle requires uppercase object names, the AWS DMS task fails in this example.

The following example uses uppercase object names in the mapping rules with Oracle as the source:

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

In this example, the task doesn't fail.

You don't have the necessary privileges to fetch source tables

Make sure that you have the necessary permissions to fetch source tables from AWS DMS.

If you use Oracle as your source endpoint, then see What are the permissions required for AWS DMS when using Oracle as the source endpoint?

For information on privileges for each source database engine, see Sources for data migration.


Related information

Troubleshooting migration tasks in AWS Database Migration Service

AWS OFFICIAL
AWS OFFICIALUpdated a year ago