Te sugerimos que revises esta respuesta en un ambiente controlado antes de enviarlo a producción, saludos.
Solución:
sqldump a un archivo de texto, buscar/reemplazar, volver a importar el archivo sqldump.
Volcar la base de datos a un archivo de textomysqldump -u root -p[root_password] [database_name] > dumpfilename.sql
Restaure la base de datos después de haber realizado cambios en ella.mysql -u root -p[root_password] [database_name] < dumpfilename.sql
Actualice la URL anterior a la nueva URL en word-press mysql Query:
UPDATE wp_options SET option_value = replace(option_value, 'http://olddomain.com', 'http://newdomain.com') WHERE option_name = 'home' OR option_name = 'siteurl';
UPDATE wp_posts SET guid = replace(guid, 'http://olddomain.com','http://newdomain.com');
UPDATE wp_posts SET post_content = replace(post_content, 'http://olddomain.com', 'http://newdomain.com');
UPDATE wp_posts SET post_excerpt = replace(post_excerpt, 'http://olddomain.com', 'http://newdomain.com');
UPDATE wp_postmeta SET meta_value = replace(meta_value, 'http://olddomain.com', 'http://newdomain.com');
Esto implica fuertemente que sus datos NO ESTÁN NORMALIZADOS para empezar.
Algo como esto debería funcionar (NOTA: no ha mencionado que usa otros idiomas, por lo que está escrito como un procedimiento almacenado de MySQL)
create procedure replace_all(find varchar(255),
replce varchar(255),
indb varcv=char(255))
DECLARE loopdone INTEGER DEFAULT 0;
DECLARE currtable varchar(100);
DECLARE alltables CURSOR FOR SELECT t.tablename, c.column_name
FROM information_schema.tables t,
information_schema.columns c
WHERE t.table_schema=indb
AND c.table_schema=indb
AND t.table_name=c.table_name;
DECLARE CONTINUE HANDLER FOR NOT FOUND
SET loopdone = 1;
OPEN alltables;
tableloop: LOOP
FETCH alltables INTO currtable, currcol;
IF (loopdone>0) THEN LEAVE LOOP;
END IF;
SET stmt=CONCAT('UPDATE ',
indb, '.', currtable, ' SET ',
currcol, ' = word_sub('', find,
'',''', replce, '') WHERE ',
currcol, ' LIKE '%', find, '%'');
PREPARE s1 FROM stmt;
EXECUTE s1;
DEALLOCATE PREPARE s1;
END LOOP;
END //
Dejaré que tú averigües cómo declarar la función sub_palabra.
Si sostienes alguna sospecha y disposición de avanzar nuestro ensayo puedes ejecutar una nota y con mucho placer lo ojearemos.