MySQL → PostgreSQL
hardPostgreSQL is more standards-compliant, has better JSON support, window functions, and a richer extension ecosystem. Moving from MySQL requires schema and query adjustments.
Estimated: 8-20h · 6 steps
Progress0%
Step 1: Audit MySQL-specific features
List all places using: AUTO_INCREMENT, ENUM types, FULLTEXT indexes, MySQL functions (IFNULL, GROUP_CONCAT, DATE_FORMAT).
Step 2: Use pgloader for initial migration
pgloader handles most MySQL→PostgreSQL schema and data conversion automatically.
pgloader mysql://user:pass@localhost/mydb postgresql://user:pass@localhost/mydb
Step 3: Fix schema differences
AUTO_INCREMENT → SERIAL/GENERATED. tinyint(1) → boolean. DATETIME → TIMESTAMP WITH TIME ZONE. Backticks → double quotes.
Step 4: Fix queries
IFNULL → COALESCE. GROUP_CONCAT → STRING_AGG. LIMIT x,y → LIMIT y OFFSET x. Stricter GROUP BY (must include all non-aggregated columns).
Step 5: Update ORM config
Prisma: change provider to 'postgresql'. Drizzle: switch to pg dialect. Sequelize: change dialect option.
Step 6: Test thoroughly
✓ All queries return correct results, transactions work, performance acceptable