Moving a multisite doesn’t always go with the ease you expect. I usually do this in two steps:
- Export the database
- Deploy/copy/sync the files to my new (staging) server
When your files are ready and your new environment is configured it’s time to import the database. My preference goes to using WP-CLI for this. Copy over the database and run wp db import ~/_sql/database-export.sql
.
When you’re moving/copying to a different domain, you also have to run database replacement scripts:
wp search-replace "https://olddomain.com" "https://newdomain.staging.com" --all-tables
And repeat this for your other subsites:wp search-replace "https://sub.olddomain.com" "https://sub.newdomain.staging.com" --all-tables
Then it’s time to load your website, and you’re presented with a big fat:
Error establishing a database connection
Also, the wp-cli commands fail to run, showing errors like: Error: Site ‘newdomain.staging.com’ not found. Verify DOMAIN_CURRENT_SITE matches an existing site or use --url=<url>
to override.
Right.. so, there’s still something in the database that is not replaced.. You’ll find out when running: `wp db query “SELECT * FROM wp_blogs”`
This clearly shows that the domains of these sites are not replaced, because they don’t include https, so let’s run the command below to confirm the fix:
wp search-replace olddomain.com newdomain.staging.com wp_blogs --dry-run
Happy with the output? Then let’s run it without –dry-run:
The fix
wp search-replace olddomain.com newdomain.staging.com wp_blogs
Leave a Reply