Supported migrations & integrity
Supported migrations & integrity
What we support
| From → To |
Type |
Rate |
| MySQL → MySQL |
Same-engine transfer |
$2/GB |
| PostgreSQL → PostgreSQL |
Same-engine transfer |
$2/GB |
| MySQL → PostgreSQL |
Cross-engine conversion |
$4/GB |
| PostgreSQL → MySQL |
Cross-engine conversion |
$4/GB |
Source and target can live on any host or any cloud — a managed provider, a droplet,
or your own server. We connect over the connection URL; there's no cloud lock-in and no
infrastructure for you to set up.
The engine detects transfer vs. conversion automatically from the two URLs, and the price
is shown at pre-flight before you commit.
How integrity is guaranteed
A migration that can't prove it's correct fails closed — it never reports success on a
partial or broken result. Every run:
- Migrates the schema first, then loads data table by table.
- Preserves foreign keys and re-applies them after load, in dependency order.
- Recreates indexes (including unique indexes).
- Maps types correctly on cross-engine conversions (e.g. MySQL
TINYINT(1) ↔ boolean,
unsigned integers, BLOB ↔ bytea), preserving values.
- Verifies row counts per table against the source. A mismatch fails the migration.
Connection URLs
Both engines accept a standard URL. You can also paste a Laravel Cloud URL or a
Forge .env snippet in the UI and we'll parse it.
mysql://user:password@host:3306/database
postgresql://user:password@host:5432/database
For managed databases that require TLS, include the appropriate sslmode (PostgreSQL) or
TLS parameters — the pre-flight check will tell you if the connection can't be established.
Limits
- Migrations above 1000 GB route to a custom conversation — contact us.
- Distributed/sharded cluster topologies are not yet supported as a single job.