mysql: cambie http://old-domain.com a http://new-domain.com en todas las tablas

4 minutos de lectura

avatar de usuario
Stan

Estoy usando declaraciones de aquí:

http://www.mydigitallife.info/2007/10/01/how-to-move-wordpress-blog-to-new-domain-or-ubication/

pero tuve que modificarlos porque estoy usando multiusuario y tiene una estructura de tabla diferente (tablas numeradas extrañas). Como puede ver en mi pregunta anterior, todo es REALMENTE problemático … Entonces mi pregunta es:

¿Puedo cambiar? http://dominio-antiguo.com a http://nuevo-dominio.com en todas partes… en cada tabla de esa base de datos? ¿Cómo hago tal búsqueda y reemplazo con mysql? ¿O tal vez sería mejor usar algo más para esta tarea?

avatar de usuario

Puede volcar toda la base de datos en un archivo .sql y reemplazarlo e importarlo nuevamente.

Para volcar db a un archivo sql, puede usar el comando mysqldump o puede hacerlo a través de phpmyadmin

mysqldump --opt -uUSERNAME -pPASSWORD -h MYSQLDOMAIN YOURDB > yourdbdump.sql

Para reemplazar el texto en el archivo .sql, puede hacer lo siguiente

sed -ie 's/old-domain.com/new-domain.com/g' yourdbdump.sql

Para restaurarlo de nuevo

mysql -uUSERNAME -pPASSWORD -h MYSQLDOMAIN YOURDB < yourdbdump.sql

  • ¿En que? Estoy en linux con gnome.

    – Stan

    23 de enero de 2010 a las 5:43

  • hey, esto funcionó para mí, pero me gustaría entender lo que significa -ie, ¿alguien puede explicarlo? ¡Gracias!

    – ohmmho

    24 de abril de 2016 a las 16:03


  • @ohmmho, -i significa editar el archivo en su lugar, no estoy seguro de por qué puse -e allí, puede no ser realmente necesario.

    – TÚ

    25 de abril de 2016 a las 1:19

WordPress MU es un dolor en el culo para migrar.

No hay nada que vaya de mesa en mesa y reemplace esas URL. Y debe tener cuidado al editar el archivo de volcado sql en caso de que la URL se almacene dentro de objetos o matrices serializados, ya que luego destruirá la integridad de esos datos.

Si desea hacerlo directamente dentro de MySQL, puede hacerlo, pero llevará mucho tiempo. También será el más seguro.

Esto será más fácil en PHPMyAdmin, incluso para los gurús de SQL experimentados, ya que PHPMyAdmin es simplemente conveniente ya que editará la consulta SQL con frecuencia. La consulta base es:

Update "table_name"
SET "column_name" = REPLACE("column_name","find","replace")
WHERE "column_name" LIKE "%find%"

Entonces, en su caso, para las tablas de publicaciones:

Update wp_1_posts
SET post_content = REPLACE(post_content,"www.oldurl.com","www.newurl.com")
WHERE post_content LIKE "%www.oldurl.com%"

A continuación, mire las tablas postmeta. Podría tener problemas aquí si hay datos serializados. Así que haga una búsqueda primero para ver cómo se ven los datos y ver si hay algún campo específico que deba dejar fuera del script de búsqueda/reemplazo. Su actualización para esta tabla se parecerá mucho a la última:

Update wp_1_postmeta
SET meta_value = REPLACE(meta_value,"www.oldurl.com","www.newurl.com")
WHERE meta_value LIKE "%www.oldurl.com%"

Si encontró campos que necesita excluir, modifique la secuencia de comandos de la siguiente manera:

Update wp_1_postmeta
SET meta_value = REPLACE(meta_value,"www.oldurl.com","www.newurl.com")
WHERE meta_value LIKE "%www.oldurl.com%"
AND meta_name NOT IN ('meta_name_1', 'meta_name_2')

La tabla de opciones debe hacerse a mano: tienes demasiado potencial para arruinar algo al automatizarlo. Busca el siteurl, home y fileupload_url campos. Busque cualquier otra cosa que pueda haber almacenado los valores también y actualícelos a mano.

Luego actualice wp_blogs y wp_site apropiadamente.

Migrar MU es de lo que están hechas las pesadillas. Vaya despacio, mire todo y, lo más importante haga todo esto en un duplicado de sus datos principales para probar primero. El espacio de la base de datos es barato, los datos perdidos no lo son.

  • Además: tenga en cuenta que blog_id en wp_blogs coincide con la estructura wp_*_table en la base de datos; puede escribir un script PHP para realizar y manejar la migración por usted. He hecho esto y es un gran ahorro de tiempo (estoy trabajando mucho con WP y WPMU). Desafortunadamente, no puedo publicar el guión, ya que fue escrito en el horario de la empresa.

    – Gipeto

    23 de enero de 2010 a las 16:02

Quiere que el INSERT() función.

¿Ha sido útil esta solución?