Saltar al contenido
Herramientas

SQL de buscar y reemplazar

Cambia la URL de tu sitio sin corromper los datos serializados

Funciona en tu navegador. No se sube nada.

The change

Read this before you run anything

WordPress stores many options as PHP-serialized strings, and a serialized string records its own byte length — s:19:"http://old-site.com". A plain SQL replace changes the text but not the length, so PHP can no longer unserialize the row. It does not error. The value just silently becomes empty.

What you lose: widget configuration, theme mods, and most plugin settings. Usually you do not notice until days later, and by then the backup you would have restored is gone too.

This is why the queries below deliberately do not touch wp_options.

What are you moving?
search-replace.sql

Take a database backup first. Not 'consider taking one' — take one. There is no undo for an UPDATE.

Sobre SQL de buscar y reemplazar

Un buscar y reemplazar de SQL ingenuo en una base de datos de WordPress rompe todas las opciones serializadas que toca, porque la longitud de la cadena almacenada deja de coincidir. Esto genera las consultas que son seguras y explica exactamente cuáles no lo son.

FAQ

Preguntas

¿Puedo cambiar la URL de mi sitio WordPress con un buscar y reemplazar SQL?

No de forma segura, y este es el mal consejo que más se comparte en WordPress. Muchas opciones se guardan como cadenas serializadas de PHP que registran su propia longitud en bytes. Un reemplazo SQL simple cambia el texto pero no la longitud, así que PHP falla en silencio al deserializar la fila y el valor simplemente desaparece, llevándose con él los ajustes de widgets, las modificaciones del tema y la configuración de plugins.

¿Qué debería usar en su lugar?

WP-CLI: 'wp search-replace old new --all-tables --dry-run' primero, y luego sin --dry-run. Entiende la serialización y reescribe correctamente los prefijos de longitud. Si no tienes acceso a la CLI, el plugin Better Search Replace hace lo mismo desde el escritorio.

¿Debería actualizar la columna GUID?

No. El GUID es un identificador único permanente de una entrada, no un enlace, y los lectores de feeds se guían por él. Reescribirlo hace que cada suscriptor vea cada entrada antigua como nueva. La documentación de WordPress dice explícitamente que no lo cambies.