Cuando tenemos que trasladar nuestros WooCommerce a un nuevo alojamiento web siempre es una aventura.

Aunque en la mayoría de las ocasiones todo funciona perfectamente a la primera, por desgracia no siempre ocurre así y en algunas ocasiones nos hemos encontrado con problemas una vez activadas las tiendas online en el nuevo servicio de alojamiento. Los problemas pueden ser generados por distintos motivos, aunque el principal suele ser algún error producido durante el traslado.

Cuando esto ocurre, en algunos casos, se nos plantea un grave problema y es que las tiendas virtuales han generado pedidos y clientes nuevos en las nuevas bases de datos, por lo que si necesitamos volver a realizar el traslado tendremos que tenerlos en cuenta para no perder la sincronización de las mismas.

Un caso real

Hoy mismo hemos tenido que sincronizar los pedidos y clientes de dos tiendas online de un cliente tras un traslado que nos ha generado muchos dolores de cabeza esta semana, hasta el punto que hemos tenido que cambiar de panel de control en el VPS para reducir a cero todos los problemas detectados.

Para hacerlo posible hemos creado estas cuatro consultas:


SELECT * FROM `wp_posts` where post_date >= '2016-04-01' and post_type = 'shop_order';

SELECT * FROM `wp_postmeta` where post_id in ( SELECT ID FROM `wp_posts` where post_date >= '2016-04-01' and post_type = 'shop_order' );

SELECT * FROM `wp_woocommerce_order_items` where order_id in ( SELECT ID FROM `wp_posts` where post_date >= '2016-04-01' and post_type = 'shop_order' );

SELECT * FROM `wp_woocommerce_order_itemmeta` where order_item_id in ( SELECT order_item_id FROM `wp_woocommerce_order_items` where order_id in ( SELECT ID FROM `wp_posts` where post_date >= '2016-04-01' and post_type = 'shop_order' ) );

SELECT * FROM `wp_users` where user_registered >= '2016-04-01';

SELECT * FROM `wp_usermeta` where user_id IN ( SELECT ID FROM `wp_users` where user_registered >= '2016-04-01' );

Con ellas obtenemos todos los pedidos y clientes generados a partir del día 1 de abril, que es a partir de cuando nos interesa sincronizar la base de datos.

¿Cómo sincronizo los datos devueltos por las consultas?

Realmente es sencillo utilizando phpMyAdmin en ambas bases de datos.

Sólo tienes que ejecutar las consultas, una a una, en la base de datos que tiene los nuevos pedidos y clientes.

Operaciones sobre los resultados de la consulta en phpMyAdmin

Una vez ejecutada la consulta, sólo tienes que ir al pie de página, concretamente al grupo de opciones contenidas en Operaciones sobre los resultados de la consulta y pulsar en Exportar.

Cuando hayas descargado, o copiado, todos los resultados de las consultas, sólo tienes que acceder al phpMyAdmin de la base de datos que queremos sincronizar y pulsar en Importar para utilizar los archivos SQL descargados, o ejecutar las consultas SQL copiadas previamente en la opción SQL.

En cuanto importes o ejecutes las consultas SQL verás cómo se añadirán a tu base de datos los nuevos pedidos y sus datos, y los nuevos clientes y sus datos, por lo que quedará sincronizada con la base de datos que finalmente has tenido que desechar.

Y eso es todo

Obviamente con estas consultas SQL no vamos a sincronizar todos los datos, sólo los pedidos y clientes, y es posible que también necesites sincronizar otros datos como páginas, entradas, productos o tipos de entradas personalizadas, e incluso opciones de configuración. Si es tu caso ya te adelantamos que, aunque es perfectamente posible hacerlo con algo de paciencia y conocimiento, en estos casos siempre es mejor limitarse al mínimo imprescindible y volver a realizar manualmente las novedades o modificaciones realizadas durante el proceso de traslado. El por qué es muy sencillo, cuanto menos contenido procedente de una base de datos “problemática” importemos, mejor.

Esperamos que las consultas SQL que os proponemos hoy os saquen de más de un apuro en vuestros traslados de alojamiento web.