¿Cómo reemplazar el nombre de dominio en una base de datos de Wordpress?

11

Tengo una base de datos de Wordpress que se instaló en un entorno de desarrollo ... por lo tanto, todas las referencias al sitio en sí tienen una dirección IP fija (por ejemplo, 192.168.16.2). Ahora, tengo que migrar esa base de datos a una nueva instalación de Wordpress en un hosting. El problema es que el volcado de SQL contiene muchas referencias a la dirección IP y tengo que reemplazarlo por: my_domain.com.

Podría usar sed o algún otro comando para cambiar eso desde la línea de comandos, el problema es que hay muchos datos de configuración que usan JSON. ¿Y qué? Bueno, como saben, los arreglos JSON usan cosas como: s:4: para saber cuántos caracteres tiene un elemento y, por lo tanto, si simplemente reemplazo la IP con el nombre del dominio, los archivos de configuración se corromperán.

Hace algunos años utilicé una aplicación para Windows que permite cambiar valores en una base de datos y se ocupa de los arreglos JSON. Desafortunadamente, olvidé el nombre de la aplicación ... así que la pregunta es: ¿conoces alguna aplicación que me permita hacer lo que quiero?

    
pregunta Cristian 21.12.2010 - 23:54

9 respuestas

7

Los datos que está viendo no tienen formato JSON. JSON no (normalmente) almacena tipos de valor y longitudes de esa manera. Lo que estás viendo son datos SERIALIZADOS. Una búsqueda en Google de "mysql replace serialized" produce esta página, lo que podría ayudar: enlace

    
respondido por el MathSmath 22.12.2010 - 21:16
8

Codex tiene una guía decente: Cambio de URL del sitio .

Básicamente, hay varios lugares donde la URL importa o no tanto (es posible que me falten algunos):

  • Opciones home y siteurl que controlan dónde WP piensa que el sitio es;
  • publique GUIDs, estos parecen enlaces pero en realidad no lo son, solo identificadores. No estoy absolutamente seguro de que sean irrelevantes, pero cambié mucho las URL en la pila de prueba y nunca me molesté en actualizarlas.
  • enlaces en cuerpos de correos;
  • posiblemente enlaces en la configuración del complemento.
respondido por el Rarst 22.12.2010 - 07:58
6

Como dijo Rarst anteriormente, solo hay dos configuraciones en la base de datos que NECESITA cambiar. Después de importar la base de datos, inicio sesión en PHPMyAdmin y edito la base de datos directamente.

Utilizo un servidor de desarrollo en mi PC todo el tiempo para importar fuentes de datos y tienen la URL adjunta a las Publicaciones en la línea de enlace y nunca causó un problema.

Solía usar una búsqueda y reemplazo de SQL hasta que me di cuenta de que no importaba. He migrado algunos sitios de un dominio a otro y donde he tenido URL absolutas en el contenido, usaré la opción de búsqueda y reemplazo de SQL.

update wp_posts set post_content = replace(post_content,'http://www.olddomain/','http://www.newdomain/');

David

    
respondido por el David Law 23.12.2010 - 02:53
5

Este es un recurso increíble que he marcado y que vuelvo una y otra vez enlace

Indican

UPDATE wp_options SET option_value = replace(option_value, 'http://www.oldsiteurl.com', 'http://www.newsiteurl.com') WHERE option_name = 'home' OR option_name = 'siteurl';
    
respondido por el Tom 22.12.2010 - 00:51
3

Puede establecer estos valores con constantes en el wp-config.php . Después de esto, puede, cuando lo desee, cambiar las entradas en la base de datos a través del administrador Adminer. Escriba esto en wp-config.php y los valores en el DB no son relevantes:

define('WP_HOME', 'http://example.com/to-wordpress');
define('WP_SITEURL', 'http://example.com/to-blog');
    
respondido por el bueltge 22.12.2010 - 01:02
2

Eche un vistazo a mi respuesta a esta pregunta:

Aborda sus problemas con la limpieza de datos y se puede personalizar para las necesidades específicas de migración de datos mediante el uso de enlaces, también.

Espero que ayude.

    
respondido por el MikeSchinkel 22.12.2010 - 08:16
2

Consultas simples de SQL - no se requieren cosas REEMPLAZO complicadas:

update wp_options set option_value = 'http://mynewdomain.com' where option_name = 'siteurl';

update wp_options set option_value = 'http://mynewdomain.com' where option_name = 'home';

Utilice aquellos con PHPMyAdmin o de cualquier otra forma que prefiera para acceder a la base de datos.

    
respondido por el Mark 23.12.2010 - 05:31
1

Esta es una pregunta muy antigua, pero como la encontré mientras buscaba otra cosa, pensé que agregaría esto para futuras referencias.

Creo que la forma más sencilla y completa de hacerlo es usar searchreplacedb2.php. Se puede encontrar aquí: enlace junto con una explicación de su uso.

Definitivamente me ha ahorrado mucho tiempo con la migración de dev a entornos en vivo en mis sitios de wordpress.

¡Solo asegúrate de eliminarlo de un servidor público una vez que hayas terminado!

    
respondido por el MatthewLee 19.04.2013 - 22:02
1

Asegúrese de tener seleccionada la nueva base de datos, luego ejecute algunas actualizaciones de SQL y comandos de reemplazo en las tablas, en particular, wp_options, wp_posts, wp_postmeta.

Use el código como se muestra a continuación e intercambie sus URL antiguas y nuevas, sin barras diagonales. Además, si es necesario, cambie los valores del prefijo de la tabla cuando corresponda (es decir, wp_)

UPDATE wp_options SET option_value = replace(option_value, 'http_www.oldurl', 'http_www.newurl') WHERE option_name = 'home' OR option_name = 'siteurl';    
UPDATE wp_posts SET guid = replace(guid, 'http_www.oldurl','http_www.newurl');    
UPDATE wp_posts SET post_content = replace(post_content, 'http_www.oldurl', 'http_www.newurl');    
UPDATE wp_postmeta SET meta_value = replace(meta_value,'http_www.oldurl','http_www.newurl');
    
respondido por el user129645 14.10.2017 - 22:31

Lea otras preguntas en las etiquetas