Pre-migration checks

Before a migration runs, DBConvert flags anything worth fixing first - and how to resolve each one.

Before a migration runs, DBConvert checks the destination tree and flags anything worth fixing first, so the run goes through cleanly. There are two kinds of flags, both highlighted directly in the tree:

  • Error marker - error: the run cannot proceed until you fix it.
  • Warning marker - warning: the run isn't blocked - but it's worth fixing now, while you're here, so the result comes out clean.

Expand the tree and click a marked node to see the explanation. Double-click jumps straight to the field/index that triggered the message.

Errors

Warnings

Database cannot be converted correctly

The selected database has issues that block the migration.

Example: the destination database is marked red because some of its objects can cause problems.

Database flagged in red

Double-click the red-marked tables, fields, or indexes to drill into the problem.

Drilling into a red-marked object

In the example, an index named Order Details_PRIMARY raises "Not all fields required by index are selected for conversion".

Table cannot be converted correctly - fields

The selected table has one or more problematic fields.

Example: the Categories table is red because the field Category[Name] contains garbage symbols. Fix the same way as Garbage symbols in the name:

  1. Rename the field manually in Name (right panel). Remove the offending characters - [ and ] in this example.

    Renaming a field manually

  2. Or use the global Garbage symbols to replace/remove field in Database options. Enter every character to replace, click Replace all.

    Bulk garbage-symbol replacement

Confirm each suggested name with OK, or click Apply All to apply the chosen Replace with character to every match.

Replace dialog

Once fixed, previously red objects clear.

Fixed objects no longer red

Table cannot be converted correctly - indexes

The selected table has problematic indexes.

Example: Order Details is red. Expand the table, then expand Indexes.

Red-marked indexes

Indexes Order Details_PRIMARY and Order Details_Order Details_OrderID raise "Not all fields required by index are selected for conversion".

Index field requirements

Table cannot be converted correctly - foreign keys

The selected table has problematic foreign keys.

Example: Orders table is red.

Red-marked foreign keys

Expand Orders, then expand Foreign Keys.

Foreign keys list

The foreign key Orders_CustomerID_fkey raises "Not all fields required by foreign key are selected for conversion".

Foreign key field requirements

Table cannot be converted correctly - mixed

The table has a combination of field, index, and foreign-key issues. Expand Fields, Indexes, and Foreign Keys to see each one.

Example: Categories is red, with a garbage symbol in a field name and indexes that are missing required fields. Fix each issue using the procedure for its category.

Garbage symbols in the name

The name of a table, field, or index contains characters reserved by the target engine.

Two fixes:

  1. Rename the object manually in Destination name - remove or replace the offending characters with _.
  2. Use Garbage symbols to replace/remove in Database options for bulk replacement (same procedure as in Fields).

Not all fields required by index are selected for conversion

An index references fields that are unchecked in the customization tree.

Example: index Order Details_pKey requires OrderID and ProductID. Tick both fields in the tree and the error clears.

Not all fields required by foreign key are selected for conversion

A foreign key references fields that are unchecked in the customization tree.

Example: Order Details_ProductID_fkey requires Order Details.ProductID and Products.ProductID. If ProductID in Products is unchecked, the error appears - tick it to clear.

Cyclic reference detected

Foreign-key relationships form a cycle. Any attempt to recreate the schema in dependency order will fail.

Fix: deselect one foreign key in the cycle. After the run, recreate it manually on the target.

First symbol of field name or index must be a letter or underscore

FoxPro target requirement. Rename the field or index so its name starts with a letter or _.

Field, index, or foreign-key name too long

FoxPro limits names to 10 characters. Rename the object to 10 characters or fewer.

Foreign-key constraint fails

When converting to FoxPro/MySQL, a foreign key references rows that do not exist in the parent table. Often happens with self-referencing tables.

Fix: deselect the foreign key for the initial run; add it back manually on the target afterwards.

Autoincrement field should be a Primary Key

An autoincrement field requires a Primary Key index. Without one, autoincrement is dropped on the target.

Example: CategoryID is autoincrement but not a Primary Key.

Autoincrement warning

Fix: enable the existing Primary Key on this field, or create one in the source database before the run.

Primary Key in tree

Primary Key applied

Field/index name matches a FoxPro reserved word

FoxPro target requirement. The name is a reserved word and will cause runtime errors.

Reserved-word warning

Fix: rename the field or index.

Reserved-word fixed

Database will be converted with small defects

The migration will succeed but the result may have minor issues. Double-click the yellow-marked objects to see what.

Yellow-marked database

Yellow-marked field

Typically the cause is an unrelated warning like Autoincrement field should be a Primary Key.

Table will be converted with small defects

Same as the database-level warning but scoped to one table. Double-click the yellow-marked fields to see the cause.

Yellow-marked table

Filter errors

Errors raised by the filter editor (see Data filters).

Wrong number format

A numeric column got a non-numeric value in the condition.

Wrong number format

Number format dialog

Wrong date/time format

The condition value does not match the database's date/time format.

Wrong date format

Date format dialog

Wrong boolean format

Boolean conditions accept 1 or 0 only.

Wrong boolean format

Boolean format dialog