Modifica tu tienda en un solo sitio
Si por algún motivo, no utilizas multitienda y dispones de dos tiendas exactamente iguales, con el mismo producto, mismo stock…
Ojo, este script es potencialmente peligroso, usalo solo si sabes lo que hace y comprendes linea por linea.
Como verás, borra las tablas de la tienda destino y copia las tablas de la tienda origen. Además, es necesario disponer de un usuario de lectura escritura en ambas tablas.
Este es el script que deberías utilizar para migrar las tablas de tu tienda:
<?php ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL); $user = 'usuario_base_de_datos'; $pass = 'passowr_base_de_datos'; $db_origen = 'nombre_bd_tienda_origen'; $db_destino = 'nombre_bd_tienda_destino'; $con = mysqli_connect('localhost', $user, $pass, $db_destino); if (!$con) { echo "Error: No se pudo conectar a MySQL." . PHP_EOL; echo "errno de depuración: " . mysqli_connect_errno() . PHP_EOL; echo "error de depuración: " . mysqli_connect_error() . PHP_EOL; exit; } //Eliminamos tablas que vamos a migrar. /* ps_product ps_product_attachment ps_product_attribute ps_product_attribute_combination ps_product_attribute_image ps_product_attribute_shop ps_product_carrier ps_product_country_tax ps_product_download ps_product_lang ps_product_sale ps_product_shop ps_product_supplier ps_product_tag ps_category_product ps_feature_product ps_category ps_category_lang ps_category_shop ps_image ps_image_lang ps_image_shop ps_image_type ps_attribute ps_attribute_lang ps_attribute_shop ps_attribute_group ps_attribute_group_lang ps_attribute_group_shop */ $sqlRemove = 'DROP TABLE '.$db_destino.'.ps_product'; $resultado = $con->query($sqlRemove); $sqlRemove = 'DROP TABLE '.$db_destino.'.ps_product_attachment'; $resultado = $con->query($sqlRemove); $sqlRemove = 'DROP TABLE '.$db_destino.'.ps_product_attribute'; $resultado = $con->query($sqlRemove); $sqlRemove = 'DROP TABLE '.$db_destino.'.ps_product_attribute_combination'; $resultado = $con->query($sqlRemove); $sqlRemove = 'DROP TABLE '.$db_destino.'.ps_product_attribute_image'; $resultado = $con->query($sqlRemove); $sqlRemove = 'DROP TABLE '.$db_destino.'.ps_product_attribute_shop'; $resultado = $con->query($sqlRemove); $sqlRemove = 'DROP TABLE '.$db_destino.'.ps_product_carrier'; $resultado = $con->query($sqlRemove); $sqlRemove = 'DROP TABLE '.$db_destino.'.ps_product_country_tax'; $resultado = $con->query($sqlRemove); $sqlRemove = 'DROP TABLE '.$db_destino.'.ps_product_download'; $resultado = $con->query($sqlRemove); $sqlRemove = 'DROP TABLE '.$db_destino.'.ps_product_lang'; $resultado = $con->query($sqlRemove); $sqlRemove = 'DROP TABLE '.$db_destino.'.ps_product_sale'; $resultado = $con->query($sqlRemove); $sqlRemove = 'DROP TABLE '.$db_destino.'.ps_product_shop'; $resultado = $con->query($sqlRemove); $sqlRemove = 'DROP TABLE '.$db_destino.'.ps_product_supplier'; $resultado = $con->query($sqlRemove); $sqlRemove = 'DROP TABLE '.$db_destino.'.ps_product_tag'; $resultado = $con->query($sqlRemove); $sqlRemove = 'DROP TABLE '.$db_destino.'.ps_category_product'; $resultado = $con->query($sqlRemove); $sqlRemove = 'DROP TABLE '.$db_destino.'.ps_feature_product'; $resultado = $con->query($sqlRemove); $sqlRemove = 'DROP TABLE '.$db_destino.'.ps_category'; $resultado = $con->query($sqlRemove); $sqlRemove = 'DROP TABLE '.$db_destino.'.ps_category_lang'; $resultado = $con->query($sqlRemove); $sqlRemove = 'DROP TABLE '.$db_destino.'.ps_category_shop'; $resultado = $con->query($sqlRemove); $sqlRemove = 'DROP TABLE '.$db_destino.'.ps_image'; $resultado = $con->query($sqlRemove); $sqlRemove = 'DROP TABLE '.$db_destino.'.ps_image_lang'; $resultado = $con->query($sqlRemove); $sqlRemove = 'DROP TABLE '.$db_destino.'.ps_image_shop'; $resultado = $con->query($sqlRemove); $sqlRemove = 'DROP TABLE '.$db_destino.'.ps_image_type'; $resultado = $con->query($sqlRemove); $sqlRemove = 'DROP TABLE '.$db_destino.'.ps_attribute'; $resultado = $con->query($sqlRemove); $sqlRemove = 'DROP TABLE '.$db_destino.'.ps_attribute_lang'; $resultado = $con->query($sqlRemove); $sqlRemove = 'DROP TABLE '.$db_destino.'.ps_attribute_shop'; $resultado = $con->query($sqlRemove); $sqlRemove = 'DROP TABLE '.$db_destino.'.ps_attribute_group'; $resultado = $con->query($sqlRemove); $sqlRemove = 'DROP TABLE '.$db_destino.'.ps_attribute_group_lang'; $resultado = $con->query($sqlRemove); $sqlRemove = 'DROP TABLE '.$db_destino.'.ps_attribute_group_shop'; $resultado = $con->query($sqlRemove); //Creaciones e inserciones $sqlCreate = 'CREATE TABLE '.$db_destino.'.ps_product LIKE '.$db_origen.'.ps_product'; $resultado = $con->query($sqlCreate); $sqlInsert = 'INSERT '.$db_destino.'.ps_product SELECT * FROM '.$db_origen.'.ps_product'; $resultado = $con->query($sqlInsert); $sqlCreate = 'CREATE TABLE '.$db_destino.'.ps_product_attachment LIKE '.$db_origen.'.ps_product_attachment'; $resultado = $con->query($sqlCreate); $sqlInsert = 'INSERT '.$db_destino.'.ps_product_attachment SELECT * FROM '.$db_origen.'.ps_product_attachment'; $resultado = $con->query($sqlInsert); $sqlCreate = 'CREATE TABLE '.$db_destino.'.ps_product_attribute LIKE '.$db_origen.'.ps_product_attribute'; $resultado = $con->query($sqlCreate); $sqlInsert = 'INSERT '.$db_destino.'.ps_product_attribute SELECT * FROM '.$db_origen.'.ps_product_attribute'; $resultado = $con->query($sqlInsert); $sqlCreate = 'CREATE TABLE '.$db_destino.'.ps_product_attribute_combination LIKE '.$db_origen.'.ps_product_attribute_combination'; $resultado = $con->query($sqlCreate); $sqlInsert = 'INSERT '.$db_destino.'.ps_product_attribute_combination SELECT * FROM '.$db_origen.'.ps_product_attribute_combination'; $resultado = $con->query($sqlInsert); $sqlCreate = 'CREATE TABLE '.$db_destino.'.ps_product_attribute_image LIKE '.$db_origen.'.ps_product_attribute_image'; $resultado = $con->query($sqlCreate); $sqlInsert = 'INSERT '.$db_destino.'.ps_product_attribute_image SELECT * FROM '.$db_origen.'.ps_product_attribute_image'; $resultado = $con->query($sqlInsert); $sqlCreate = 'CREATE TABLE '.$db_destino.'.ps_product_attribute_shop LIKE '.$db_origen.'.ps_product_attribute_shop'; $resultado = $con->query($sqlCreate); $sqlInsert = 'INSERT '.$db_destino.'.ps_product_attribute_shop SELECT * FROM '.$db_origen.'.ps_product_attribute_shop'; $resultado = $con->query($sqlInsert); $sqlCreate = 'CREATE TABLE '.$db_destino.'.ps_product_carrier LIKE '.$db_origen.'.ps_product_carrier'; $resultado = $con->query($sqlCreate); $sqlInsert = 'INSERT '.$db_destino.'.ps_product_carrier SELECT * FROM '.$db_origen.'.ps_product_carrier'; $resultado = $con->query($sqlInsert); $sqlCreate = 'CREATE TABLE '.$db_destino.'.ps_product_country_tax LIKE '.$db_origen.'.ps_product_country_tax'; $resultado = $con->query($sqlCreate); $sqlInsert = 'INSERT '.$db_destino.'.ps_product_country_tax SELECT * FROM '.$db_origen.'.ps_product_country_tax'; $resultado = $con->query($sqlInsert); $sqlCreate = 'CREATE TABLE '.$db_destino.'.ps_product_download LIKE '.$db_origen.'.ps_product_download'; $resultado = $con->query($sqlCreate); $sqlInsert = 'INSERT '.$db_destino.'.ps_product_download SELECT * FROM '.$db_origen.'.ps_product_download'; $resultado = $con->query($sqlInsert); $sqlCreate = 'CREATE TABLE '.$db_destino.'.ps_product_lang LIKE '.$db_origen.'.ps_product_lang'; $resultado = $con->query($sqlCreate); $sqlInsert = 'INSERT '.$db_destino.'.ps_product_lang SELECT * FROM '.$db_origen.'.ps_product_lang'; $resultado = $con->query($sqlInsert); $sqlCreate = 'CREATE TABLE '.$db_destino.'.ps_product_sale LIKE '.$db_origen.'.ps_product_sale'; $resultado = $con->query($sqlCreate); $sqlInsert = 'INSERT '.$db_destino.'.ps_product_sale SELECT * FROM '.$db_origen.'.ps_product_sale'; $resultado = $con->query($sqlInsert); $sqlCreate = 'CREATE TABLE '.$db_destino.'.ps_product_shop LIKE '.$db_origen.'.ps_product_shop'; $resultado = $con->query($sqlCreate); $sqlInsert = 'INSERT '.$db_destino.'.ps_product_shop SELECT * FROM '.$db_origen.'.ps_product_shop'; $resultado = $con->query($sqlInsert); $sqlCreate = 'CREATE TABLE '.$db_destino.'.ps_product_supplier LIKE '.$db_origen.'.ps_product_supplier'; $resultado = $con->query($sqlCreate); $sqlInsert = 'INSERT '.$db_destino.'.ps_product_supplier SELECT * FROM '.$db_origen.'.ps_product_supplier'; $resultado = $con->query($sqlInsert); $sqlCreate = 'CREATE TABLE '.$db_destino.'.ps_product_tag LIKE '.$db_origen.'.ps_product_tag'; $resultado = $con->query($sqlCreate); $sqlInsert = 'INSERT '.$db_destino.'.ps_product_tag SELECT * FROM '.$db_origen.'.ps_product_tag'; $resultado = $con->query($sqlInsert); $sqlCreate = 'CREATE TABLE '.$db_destino.'.ps_category_product LIKE '.$db_origen.'.ps_category_product'; $resultado = $con->query($sqlCreate); $sqlInsert = 'INSERT '.$db_destino.'.ps_category_product SELECT * FROM '.$db_origen.'.ps_category_product'; $resultado = $con->query($sqlInsert); $sqlCreate = 'CREATE TABLE '.$db_destino.'.ps_feature_product LIKE '.$db_origen.'.ps_feature_product'; $resultado = $con->query($sqlCreate); $sqlInsert = 'INSERT '.$db_destino.'.ps_feature_product SELECT * FROM '.$db_origen.'.ps_feature_product'; $resultado = $con->query($sqlInsert); $sqlCreate = 'CREATE TABLE '.$db_destino.'.ps_category LIKE '.$db_origen.'.ps_category'; $resultado = $con->query($sqlCreate); $sqlInsert = 'INSERT '.$db_destino.'.ps_category SELECT * FROM '.$db_origen.'.ps_category'; $resultado = $con->query($sqlInsert); $sqlCreate = 'CREATE TABLE '.$db_destino.'.ps_category_lang LIKE '.$db_origen.'.ps_category_lang'; $resultado = $con->query($sqlCreate); $sqlInsert = 'INSERT '.$db_destino.'.ps_category_lang SELECT * FROM '.$db_origen.'.ps_category_lang'; $resultado = $con->query($sqlInsert); $sqlCreate = 'CREATE TABLE '.$db_destino.'.ps_category_shop LIKE '.$db_origen.'.ps_category_shop'; $resultado = $con->query($sqlCreate); $sqlInsert = 'INSERT '.$db_destino.'.ps_category_shop SELECT * FROM '.$db_origen.'.ps_category_shop'; $resultado = $con->query($sqlInsert); $sqlCreate = 'CREATE TABLE '.$db_destino.'.ps_image LIKE '.$db_origen.'.ps_image'; $resultado = $con->query($sqlCreate); $sqlInsert = 'INSERT '.$db_destino.'.ps_image SELECT * FROM '.$db_origen.'.ps_image'; $resultado = $con->query($sqlInsert); $sqlCreate = 'CREATE TABLE '.$db_destino.'.ps_image_lang LIKE '.$db_origen.'.ps_image_lang'; $resultado = $con->query($sqlCreate); $sqlInsert = 'INSERT '.$db_destino.'.ps_image_lang SELECT * FROM '.$db_origen.'.ps_image_lang'; $resultado = $con->query($sqlInsert); $sqlCreate = 'CREATE TABLE '.$db_destino.'.ps_image_shop LIKE '.$db_origen.'.ps_image_shop'; $resultado = $con->query($sqlCreate); $sqlInsert = 'INSERT '.$db_destino.'.ps_image_shop SELECT * FROM '.$db_origen.'.ps_image_shop'; $resultado = $con->query($sqlInsert); $sqlCreate = 'CREATE TABLE '.$db_destino.'.ps_image_type LIKE '.$db_origen.'.ps_image_type'; $resultado = $con->query($sqlCreate); $sqlInsert = 'INSERT '.$db_destino.'.ps_image_type SELECT * FROM '.$db_origen.'.ps_image_type'; $resultado = $con->query($sqlInsert); $sqlCreate = 'CREATE TABLE '.$db_destino.'.ps_attribute LIKE '.$db_origen.'.ps_attribute'; $resultado = $con->query($sqlCreate); $sqlInsert = 'INSERT '.$db_destino.'.ps_attribute SELECT * FROM '.$db_origen.'.ps_attribute'; $resultado = $con->query($sqlInsert); $sqlCreate = 'CREATE TABLE '.$db_destino.'.ps_attribute_lang LIKE '.$db_origen.'.ps_attribute_lang'; $resultado = $con->query($sqlCreate); $sqlInsert = 'INSERT '.$db_destino.'.ps_attribute_lang SELECT * FROM '.$db_origen.'.ps_attribute_lang'; $resultado = $con->query($sqlInsert); $sqlCreate = 'CREATE TABLE '.$db_destino.'.ps_attribute_shop LIKE '.$db_origen.'.ps_attribute_shop'; $resultado = $con->query($sqlCreate); $sqlInsert = 'INSERT '.$db_destino.'.ps_attribute_shop SELECT * FROM '.$db_origen.'.ps_attribute_shop'; $resultado = $con->query($sqlInsert); $sqlCreate = 'CREATE TABLE '.$db_destino.'.ps_attribute_group LIKE '.$db_origen.'.ps_attribute_group'; $resultado = $con->query($sqlCreate); $sqlInsert = 'INSERT '.$db_destino.'.ps_attribute_group SELECT * FROM '.$db_origen.'.ps_attribute_group'; $resultado = $con->query($sqlInsert); $sqlCreate = 'CREATE TABLE '.$db_destino.'.ps_attribute_group_lang LIKE '.$db_origen.'.ps_attribute_group_lang'; $resultado = $con->query($sqlCreate); $sqlInsert = 'INSERT '.$db_destino.'.ps_attribute_group_lang SELECT * FROM '.$db_origen.'.ps_attribute_group_lang'; $resultado = $con->query($sqlInsert); $sqlCreate = 'CREATE TABLE '.$db_destino.'.ps_attribute_group_shop LIKE '.$db_origen.'.ps_attribute_group_shop'; $resultado = $con->query($sqlCreate); $sqlInsert = 'INSERT '.$db_destino.'.ps_attribute_group_shop SELECT * FROM '.$db_origen.'.ps_attribute_group_shop'; $resultado = $con->query($sqlInsert);
Posteriormente, en Linux, programaremos un cron que ejecute las siguientes lineas para mover la carpeta imágenes de un origen a un destino:
rm -rf RUTA_DESTINO/img/p/* cp -R RUTA_ORIGEN/img/p/* RUTA_DESTINO/img/p/ sudo chown -R USUARIO:GRUPO RUTA_DESTINO/img/p/*
Ahora debemos programar los crones que reindexan las tablas justo después de lanzar estos scripts.
El proceso de ejecución no dura ni 1 min. Por lo que es algo bastante rápido.