The problem with plain search and replace
WordPress stores many settings as PHP-serialized strings, where each string records its length:
s:18:"http://old.example". Replace the URL with a longer one in phpMyAdmin or with plain SQL and the length
no longer matches. PHP then can't read the value, and widgets, theme settings or whole options silently reset.
What Gadwal does instead
- Serialized-aware search and replace. It decodes serialized values, including nested arrays and objects, replaces inside them, and writes them back with correct UTF-8 byte lengths. Plain text and JSON are handled too, and GUIDs are skipped by default.
- Dry run first. See how many matches each table and column has before anything changes.
- Backup before applying. Affected tables are backed up, then changes are written in batches inside a transaction.
- Friendly views for posts and pages, users with decoded roles, options with an autoload size meter, comments, plugins and WooCommerce orders.
- Serialized value editor. Open a cell as a tree, edit it, and save valid serialized data.
WordPress mode is in Gadwal's free tier. Gadwal always backs up the affected tables before search and replace runs.
Setup steps: WordPress mode docs.
Questions
Do I need to install a plugin on the site?
No. Gadwal connects to the MySQL database directly, usually through SSH. Nothing is installed on WordPress.
Why not use a search and replace plugin?
Plugins work well when the site loads. Gadwal works on the database itself, which helps when a bad URL or a broken option has taken the site down.