Skip to content

Instantly share code, notes, and snippets.

@chuckreynolds
Last active July 7, 2025 12:20
Show Gist options
  • Select an option

  • Save chuckreynolds/6032234 to your computer and use it in GitHub Desktop.

Select an option

Save chuckreynolds/6032234 to your computer and use it in GitHub Desktop.
UPDATE: Use WP-CLI find-replace command to edit URLs in your database. https://developer.wordpress.org/cli/commands/search-replace/ Use this SQL script when changing domains on a WordPress site. Whether you’re moving from an old domain to a new domain or you’re changing from a development domain to a production domain this will work. __STEP1: al…
/* Use WP-CLI instead https://developer.wordpress.org/cli/commands/search-replace/ */
SET @oldsite='http://oldsite.com';
SET @newsite='http://newsite.com';
UPDATE wp_options SET option_value = replace(option_value, @oldsite, @newsite) WHERE option_name = 'home' OR option_name = 'siteurl';
UPDATE wp_posts SET post_content = replace(post_content, @oldsite, @newsite);
UPDATE wp_links SET link_url = replace(link_url, @oldsite, @newsite);
UPDATE wp_postmeta SET meta_value = replace(meta_value, @oldsite, @newsite);
/* only uncomment next line if you want all your current posts to post to RSS again as new */
#UPDATE wp_posts SET guid = replace(guid, @oldsite, @newsite);
@jaircuevajunior

jaircuevajunior commented Jan 24, 2018 •

Copy link
Copy Markdown

Hi guys,

First of all thanks for the tips, they are very appreciated.

What do you think of find/replace within dumpfile method?

I've came across this method after having some problems using this method with other tables, as Artistan has mentioned this possibility.

So I started to think about find/replacing inside dumpfile itself.

Looks like it works...

I have created a gist explaining the simplicity of this process [link removed]

@omittelstaedt

omittelstaedt commented Feb 12, 2018 •

Copy link
Copy Markdown

If you get the error

#1270 - Illegal mix of collations ...

then just add the collation for the vars. I.e. for for collation utf8_general_ci:

SET @oldsite='http://oldsite.com' COLLATE utf8_general_ci; 
SET @newsite='http://newsite.com' COLLATE utf8_general_ci;

....
# rest of the code as above

@nncl

nncl commented Apr 23, 2018

Copy link
Copy Markdown

I've tested what @jaircuevajunior made and worked like a charm, thanks mate.

@jeromeip

jeromeip commented Mar 22, 2019 •

Copy link
Copy Markdown

The procedure proposed by @jaircuevajunior is quite straightforward, however it will only fully work if the former URL and the new one have the same length. Therefore I suggest that you keep this in mind if, for example, you're working on a test version and plan to move to production.

When the lengths differs, you need to use a more sophisticated script that takes into consideration variable serialization frequently used in WordPress database.
For this, I've used successfully a few times a script developed by Interconnect/IT (it's free but you need to complete a form to get it).
[link removed]

@martinacostadev

Copy link
Copy Markdown

Thanks!

@clementbiron

clementbiron commented Jan 21, 2020 •

Copy link
Copy Markdown

You could use this tool to generate your sql script : [link removed]

@chuckreynolds

Copy link
Copy Markdown
Author

What everybody SHOULD use anymore is WP-CLI Find/Replace. End of conversation. https://developer.wordpress.org/cli/commands/search-replace/

@clementbiron

Copy link
Copy Markdown

I couldn't agree more but:

  • wp cli is not available on all hosting services
  • using a command line tool is not possible for the majority of users

that's why extensions and tools exist

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment