Website Migration
WordPress Migration Failed
Last reviewed
Graphic options · pick what to keep
dnsFlow
requestTimeline
decisionTree
serverRack
Direct answer
A failed WordPress migration usually means incomplete files, a partial or wrong database import, mismatched wp-config.php credentials, broken serialized URLs, or DNS still pointing at the old host — so identify which step failed (export, transfer, import, or cutover) before re-running the whole move.
Migration failures show up as database connection errors, blank pages, redirect loops to the old domain, missing media, or a stuck progress bar — often several at once. This guide walks the migration pipeline in order: verify backups, confirm files and database on the destination, align wp-config and URLs, then update DNS and SSL — so you repair the broken stage instead of starting from scratch blindly.
What the error means
Moving WordPress is a sequence: export files and database from the source, transfer them to the destination host, import the database, update wp-config.php with new DB credentials and salts if needed, replace old domain URLs in a serialization-safe way, fix file permissions, then point DNS and SSL at the new stack. Failure at any step mimics unrelated errors — “Error establishing a database connection” is often wrong DB name or user on the new host, not a corrupt site; redirect loops often mean siteurl/home still show the old URL while DNS already moved. Migration plugins can time out on large tables or skip uploads. Manual copies forget wp-content/uploads or .htaccess. Treat the failure message as a clue to which stage broke, and keep the source site untouched until the destination is verified on a temporary URL.
Common symptoms
- Migration plugin stops below 100% or reports timeout, disk full, or HTTP error
- Destination shows “Error establishing a database connection” immediately after import
- Site loads on temporary URL but breaks when DNS switches to the live domain
- Homepage redirects to the old domain or old host parking page
- Layout loads but images, CSS, or uploads 404 on the new server
- White screen or critical error only on the migrated copy
- wp-admin login fails with correct password or endless redirect
- Mixed content or “Not secure” warnings after cutover despite SSL on the new host
Most likely causes
- 01 Database import incomplete — max packet size, timeout, or wrong charset/collation
- 02 wp-config.php still has old database host, name, user, or password
- 03 Files missing from wp-content (uploads, plugins, mu-plugins, custom drop-ins)
- 04 Naive search-replace broke serialized PHP data in options and post meta
- 05 siteurl/home or hardcoded URLs still reference the source domain
- 06 DNS A/AAAA or nameservers not updated, or TTL/propagation still serving old IP
- 07 File permissions or ownership wrong on the new host so PHP cannot read files
- 08 PHP version or extensions on destination incompatible with source site
What changed before the problem started
- Full or partial migration to a new host, server, or domain
- Switch from temporary/staging URL to production DNS
- SSL certificate installed or CDN proxy enabled on the new stack
- Migration plugin or manual SQL import used for URL replacement
- PHP version changed during the move
- Database user credentials recreated on the new hosting panel
Troubleshooting steps
- 01
Confirm you still have a working source backup
Before retrying, verify you have a fresh file backup and database dump from before the failed attempt. Do not delete the old host until the new site loads correctly on a temp URL. Success signal: restorable archive and SQL export are stored off-server.
- 02
Identify which migration stage failed
Note whether the error appeared during upload, SQL import, URL replace, or after DNS change. Plugin logs and host import screens usually say “import” vs “connection.” Success signal: you can name the broken stage — files, database, URLs, or DNS.
- 03
Verify database exists and wp-config matches the panel
In the new host panel, confirm database name, user, password, and host (often localhost). Match every value in wp-config.php exactly. Re-import SQL if tables are missing or partial. Success signal: phpMyAdmin shows complete wp_* tables and the front end connects.
- 04
Confirm wp-content uploaded completely
Compare sizes of wp-content/uploads and large plugin folders between source and destination. Re-sync via SFTP/rsync if the migration plugin skipped files. Success signal: media URLs return 200 on the temp hostname.
- 05
Update URLs with a serialization-safe tool
Replace old domain URLs using WP-CLI search-replace, your migration plugin’s built-in replace, or a trusted dedicated tool — not raw SQL on wp_options. Update siteurl and home to the temp or final URL as appropriate. Success signal: no redirects to the old domain on the temp URL.
- 06
Test on temporary URL before changing DNS
Load the site on the host-provided temp domain or hosts-file override. Fix PHP errors, permalinks, and SSL on the new stack while DNS still points at the old server. Success signal: full browse and wp-admin work on temp URL, then schedule DNS cutover.
When to stop troubleshooting
Hand off when repeated imports fail on large databases you cannot split; when serialized corruption is widespread in builder content; when DNS/registrar access is locked; when the destination host cannot run required PHP extensions; or when ecommerce orders must stay live during cutover. Provide migration tool logs, wp-config redacted screenshot, import error text, and whether temp URL works.
Information to collect before requesting help
- 01 Migration method (plugin name, manual SFTP, host mover) and failure step
- 02 Exact error message or plugin log excerpt
- 03 Whether source site still online and backup timestamp
- 04 New host database credentials vs wp-config.php (redacted)
- 05 Table count and size in destination phpMyAdmin
- 06 Old and new domain URLs; temp URL test result
- 07 DNS records planned or already changed (A, AAAA, CNAME, MX)
- 08 PHP version on source vs destination and recent plugin list
How a professional repairs the problem
We map the failure to a pipeline stage, restore from verified backups when needed, and re-import databases with appropriate size limits and charset. We sync missing wp-content, align wp-config and serialization-safe URL replacements, fix permissions and permalinks on the temp hostname, then coordinate DNS/SSL cutover with lowered TTL. Post-cutover we purge caches, verify media and admin login, and scan for mixed content or redirect leftovers to the old domain.
Frequently asked questions
Should I run the migration plugin again from zero? +
Why does the temp URL work but the live domain fails? +
Is “Error establishing a database connection” always a migration problem? +
Can I change DNS before testing the new host? +
Why are images missing after migration? +
Do I need new salts in wp-config after migration? +
Repair dispatch
Still Need Help Fixing Your Website?
If you are not comfortable editing website files, changing server settings, repairing a database, or troubleshooting a live website, professional help may prevent additional damage or downtime. We will review the problem before accepting the repair.
- You will receive a clear explanation of the likely cause.
- We will tell you if the issue falls outside our repair scope.
- No additional work will be performed without approval.
- A backup should be created whenever access and website condition allow it.
Do not share passwords through an unencrypted contact form.