What needs attention
How DBConvert handles the PostgreSQL → MySQL differences
PostgreSQL and MySQL differ in type mapping, sequence model,
index features, and procedural code. DBConvert maps most of
those differences in the wizard with sensible defaults that you
can review or override per table; PL/pgSQL rewrite and
PostgreSQL-only application SQL are the two items that still
need a human.
Sequences and identity
Collapses PostgreSQL standalone sequences into MySQL
AUTO_INCREMENT columns and sets the high-water
value above the loaded maximum key value before the
application resumes inserts - standard MySQL has no
separate sequence object to manage.
Indexes and constraints
Recreates PostgreSQL partial-index semantics on MySQL where
possible (filtered storage logic, generated columns), and
reports GIN / GiST / exclusion constraints that have no
direct MySQL analogue in the migration log so the business
rule can be rebuilt with MySQL full-text / spatial indexes
or application logic.
Application SQL portability
PostgreSQL-specific query syntax (RETURNING,
ON CONFLICT, DISTINCT ON,
ILIKE, array and jsonb operators,
double-quoted identifiers) does not run unchanged on MySQL.
DBConvert moves the schema and data; the application SQL
layer is its own task - usually a search-and-replace
pass plus a test cycle.
Procedural code stays behind
The migration covers tables - their fields, types, defaults,
and indexes - and the foreign keys between them. PL/pgSQL
functions, triggers, rules, custom operators, and
extension-backed behavior (PostGIS, hstore, pgvector) stay
in the source and are rewritten by hand in MySQL's
stored-procedure dialect, or moved into application code.
On most schemas this is a small share of the work, and it is
rewrite work on any route.