Nettoyer Magento après les tests

75

Je suis actuellement en train de faire beaucoup de tests sur Magento pour pouvoir me familiariser avec cela. Malheureusement, la base de données est extrêmement encombrée de mes tests. Je souhaite nettoyer la base de données pour pouvoir recommencer. Cela signifie faire ce qui suit:

  • Effacement de tous les produits
  • Effacement de tous les attributs
  • Effacement de tous les ensembles d'attributs
  • Effacement de toutes les catégories
  • Effacement de toutes les commandes, expéditions, transactions, etc.

J'ai trouvé un article sur les forums Magento pour nettoyer les produits, qui correspond au code SQL suivant:

SET FOREIGN_KEY_CHECKS = 0;
TRUNCATE TABLE `catalog_product_bundle_option`;
TRUNCATE TABLE `catalog_product_bundle_option_value`;
TRUNCATE TABLE `catalog_product_bundle_selection`;
TRUNCATE TABLE `catalog_product_entity_datetime`;
TRUNCATE TABLE `catalog_product_entity_decimal`;
TRUNCATE TABLE `catalog_product_entity_gallery`;
TRUNCATE TABLE `catalog_product_entity_int`;
TRUNCATE TABLE `catalog_product_entity_media_gallery`;
TRUNCATE TABLE `catalog_product_entity_media_gallery_value`;
TRUNCATE TABLE `catalog_product_entity_text`;
TRUNCATE TABLE `catalog_product_entity_tier_price`;
TRUNCATE TABLE `catalog_product_entity_varchar`;
TRUNCATE TABLE `catalog_product_flat_1`;
TRUNCATE TABLE `catalog_product_link`;
TRUNCATE TABLE `catalog_product_link_attribute`;
TRUNCATE TABLE `catalog_product_link_attribute_decimal`;
TRUNCATE TABLE `catalog_product_link_attribute_int`;
TRUNCATE TABLE `catalog_product_link_attribute_varchar`;
TRUNCATE TABLE `catalog_product_link_type`;
TRUNCATE TABLE `catalog_product_option`;
TRUNCATE TABLE `catalog_product_option_price`;
TRUNCATE TABLE `catalog_product_option_title`;
TRUNCATE TABLE `catalog_product_option_type_price`;
TRUNCATE TABLE `catalog_product_option_type_title`;
TRUNCATE TABLE `catalog_product_option_type_value`;
TRUNCATE TABLE `catalog_product_super_attribute_label`;
TRUNCATE TABLE `catalog_product_super_attribute_pricing`;
TRUNCATE TABLE `catalog_product_super_attribute`;
TRUNCATE TABLE `catalog_product_super_link`;
TRUNCATE TABLE `catalog_product_enabled_index`;
TRUNCATE TABLE `catalog_product_website`;
TRUNCATE TABLE `catalog_product_relation`;
TRUNCATE TABLE `catalog_category_product_index`;
TRUNCATE TABLE `catalog_category_product`;
TRUNCATE TABLE `cataloginventory_stock_item`;
TRUNCATE TABLE `cataloginventory_stock_status`;
TRUNCATE TABLE `cataloginventory_stock_status_idx`;
TRUNCATE TABLE `cataloginventory_stock`;
TRUNCATE TABLE `core_url_rewrite`;
INSERT  INTO `catalog_product_link_type`(`link_type_id`,`code`) VALUES (1,'relation'),(2,'bundle'),(3,'super'),(4,'up_sell'),(5,'cross_sell');
INSERT  INTO `catalog_product_link_attribute`(`product_link_attribute_id`,`link_type_id`,`product_link_attribute_code`,`data_type`) VALUES (1,2,'qty','decimal'),(2,1,'position','int'),(3,4,'position','int'),(4,5,'position','int'),(6,1,'qty','decimal'),(7,3,'position','int'),(8,3,'qty','decimal');
INSERT  INTO `cataloginventory_stock`(`stock_id`,`stock_name`) VALUES (1,'Default');
TRUNCATE TABLE `catalog_product_entity`;
SET FOREIGN_KEY_CHECKS = 1;

J'aurais besoin de la même chose pour les autres mentionnés. Malheureusement, je ne sais pas quelles tables contiennent toutes les données, sinon je l'aurais fait moi-même. Je ne veux pas non plus effacer les mauvaises tables par accident. J'espère que vous pouvez m'aider!

Surgelés
la source
De quelles données de votre base de tests avez-vous encore besoin? Avez-vous envisagé d'exporter ces données (par exemple, votre configuration core_config_data) et recommencez-vous?
Alex
1
Consultez également github.com/netz98/n98-magerun#stripped-database-dump - cela vous permet d'exporter la base de données sans commande, etc., puis de procéder à une nouvelle importation.
Alex
@Alex Je ne sais pas quoi garder, car je l'ai reçu d'un tiers qui a créé la base du magasin. Je dois continuer à développer moi-même, mais je ne suis pas tout à fait sûr de ce que je peux simplement jeter et de ce qui ne l'est pas. Aussi, je vais regarder le lien que vous avez donné.
Congelé
J'ai accidentellement effacé tous les attributs. Y compris les attributs du système Magento. Je ne peux pas créer de produits maintenant. Existe-t-il un moyen de restaurer les attributs par défaut du système principal Magento?
Jelly_Doughnut
@Jelly_Doughnut Je suggère de poser une question distincte
Kristof à Fooman

Réponses:

98
    ***********for categories********************
TRUNCATE TABLE `catalog_category_entity`;
TRUNCATE TABLE `catalog_category_entity_datetime`;
TRUNCATE TABLE `catalog_category_entity_decimal`;
TRUNCATE TABLE `catalog_category_entity_int`;
TRUNCATE TABLE `catalog_category_entity_text`;
TRUNCATE TABLE `catalog_category_entity_varchar`;
TRUNCATE TABLE `catalog_category_product`;
TRUNCATE TABLE `catalog_category_product_index`;

INSERT  INTO `catalog_category_entity`(`entity_id`,`entity_type_id`,`attribute_set_id`,`parent_id`,`created_at`,`updated_at`,`path`,`POSITION`,`level`,`children_count`) VALUES (1,3,0,0,'0000-00-00 00:00:00','2009-02-20 00:25:34','1',1,0,1),(2,3,3,0,'2009-02-20 00:25:34','2009-02-20 00:25:34','1/2',1,1,0);
INSERT  INTO `catalog_category_entity_int`(`value_id`,`entity_type_id`,`attribute_id`,`store_id`,`entity_id`,`value`) VALUES (1,3,32,0,2,1),(2,3,32,1,2,1);
INSERT  INTO `catalog_category_entity_varchar`(`value_id`,`entity_type_id`,`attribute_id`,`store_id`,`entity_id`,`value`) VALUES (1,3,31,0,1,'Root Catalog'),(2,3,33,0,1,'root-catalog'),(3,3,31,0,2,'Default Category'),(4,3,39,0,2,'PRODUCTS'),(5,3,33,0,2,'default-category');

    *****************for customers*****************


    SET FOREIGN_KEY_CHECKS=0;
-- reset customers
TRUNCATE customer_address_entity;
TRUNCATE customer_address_entity_datetime;
TRUNCATE customer_address_entity_decimal;
TRUNCATE customer_address_entity_int;
TRUNCATE customer_address_entity_text;
TRUNCATE customer_address_entity_varchar;
TRUNCATE customer_entity;
TRUNCATE customer_entity_datetime;
TRUNCATE customer_entity_decimal;
TRUNCATE customer_entity_int;
TRUNCATE customer_entity_text;
TRUNCATE customer_entity_varchar;
TRUNCATE log_customer;
TRUNCATE log_visitor;
TRUNCATE log_visitor_info;

ALTER TABLE customer_address_entity AUTO_INCREMENT=1;
ALTER TABLE customer_address_entity_datetime AUTO_INCREMENT=1;
ALTER TABLE customer_address_entity_decimal AUTO_INCREMENT=1;
ALTER TABLE customer_address_entity_int AUTO_INCREMENT=1;
ALTER TABLE customer_address_entity_text AUTO_INCREMENT=1;
ALTER TABLE customer_address_entity_varchar AUTO_INCREMENT=1;
ALTER TABLE customer_entity AUTO_INCREMENT=1;
ALTER TABLE customer_entity_datetime AUTO_INCREMENT=1;
ALTER TABLE customer_entity_decimal AUTO_INCREMENT=1;
ALTER TABLE customer_entity_int AUTO_INCREMENT=1;
ALTER TABLE customer_entity_text AUTO_INCREMENT=1;
ALTER TABLE customer_entity_varchar AUTO_INCREMENT=1;
ALTER TABLE log_customer AUTO_INCREMENT=1;
ALTER TABLE log_visitor AUTO_INCREMENT=1;
ALTER TABLE log_visitor_info AUTO_INCREMENT=1;
SET FOREIGN_KEY_CHECKS=1;

Pour les commandes

    SET FOREIGN_KEY_CHECKS=0; 
TRUNCATE `sales_flat_creditmemo`; 
TRUNCATE `sales_flat_creditmemo_comment`; 
TRUNCATE `sales_flat_creditmemo_grid`; 
TRUNCATE `sales_flat_creditmemo_item`; 
TRUNCATE `sales_flat_invoice`; 
TRUNCATE `sales_flat_invoice_comment`; 
TRUNCATE `sales_flat_invoice_grid`; 
TRUNCATE `sales_flat_invoice_item`; 
TRUNCATE `sales_flat_order`; 
TRUNCATE `sales_flat_order_address`; 
TRUNCATE `sales_flat_order_grid`; 
TRUNCATE `sales_flat_order_item`; 
TRUNCATE `sales_flat_order_payment`; 
TRUNCATE `sales_flat_order_status_history`; 
TRUNCATE `sales_flat_quote`; 
TRUNCATE `sales_flat_quote_address`; 
TRUNCATE `sales_flat_quote_address_item`; 
TRUNCATE `sales_flat_quote_item`; 
TRUNCATE `sales_flat_quote_item_option`; 
TRUNCATE `sales_flat_quote_payment`; 
TRUNCATE `sales_flat_quote_shipping_rate`; 
TRUNCATE `sales_flat_shipment`; 
TRUNCATE `sales_flat_shipment_comment`; 
TRUNCATE `sales_flat_shipment_grid`; 
TRUNCATE `sales_flat_shipment_item`; 
TRUNCATE `sales_flat_shipment_track`; 
TRUNCATE `sales_invoiced_aggregated`; 
TRUNCATE `sales_invoiced_aggregated_order`; 
TRUNCATE `sales_payment_transaction`;
TRUNCATE `sales_order_aggregated_created`; 
TRUNCATE `sales_order_tax`;
TRUNCATE `sales_order_tax_item`;
TRUNCATE `sendfriend_log`; 
TRUNCATE `tag`; 
TRUNCATE `tag_relation`; 
TRUNCATE `tag_summary`; 
TRUNCATE `wishlist`; 
TRUNCATE `log_quote`; 
TRUNCATE `report_event`; 
ALTER TABLE `sales_flat_creditmemo` AUTO_INCREMENT=1; 
ALTER TABLE `sales_flat_creditmemo_comment` AUTO_INCREMENT=1; 
ALTER TABLE `sales_flat_creditmemo_grid` AUTO_INCREMENT=1; 
ALTER TABLE `sales_flat_creditmemo_item` AUTO_INCREMENT=1; 
ALTER TABLE `sales_flat_invoice` AUTO_INCREMENT=1; 
ALTER TABLE `sales_flat_invoice_comment` AUTO_INCREMENT=1; 
ALTER TABLE `sales_flat_invoice_grid` AUTO_INCREMENT=1; 
ALTER TABLE `sales_flat_invoice_item` AUTO_INCREMENT=1; 
ALTER TABLE `sales_flat_order` AUTO_INCREMENT=1; 
ALTER TABLE `sales_flat_order_address` AUTO_INCREMENT=1; 
ALTER TABLE `sales_flat_order_grid` AUTO_INCREMENT=1; 
ALTER TABLE `sales_flat_order_item` AUTO_INCREMENT=1; 
ALTER TABLE `sales_flat_order_payment` AUTO_INCREMENT=1; 
ALTER TABLE `sales_flat_order_status_history` AUTO_INCREMENT=1; 
ALTER TABLE `sales_flat_quote` AUTO_INCREMENT=1; 
ALTER TABLE `sales_flat_quote_address` AUTO_INCREMENT=1; 
ALTER TABLE `sales_flat_quote_address_item` AUTO_INCREMENT=1; 
ALTER TABLE `sales_flat_quote_item` AUTO_INCREMENT=1; 
ALTER TABLE `sales_flat_quote_item_option` AUTO_INCREMENT=1; 
ALTER TABLE `sales_flat_quote_payment` AUTO_INCREMENT=1; 
ALTER TABLE `sales_flat_quote_shipping_rate` AUTO_INCREMENT=1; 
ALTER TABLE `sales_flat_shipment` AUTO_INCREMENT=1; 
ALTER TABLE `sales_flat_shipment_comment` AUTO_INCREMENT=1; 
ALTER TABLE `sales_flat_shipment_grid` AUTO_INCREMENT=1; 
ALTER TABLE `sales_flat_shipment_item` AUTO_INCREMENT=1; 
ALTER TABLE `sales_flat_shipment_track` AUTO_INCREMENT=1; 
ALTER TABLE `sales_invoiced_aggregated` AUTO_INCREMENT=1; 
ALTER TABLE `sales_invoiced_aggregated_order` AUTO_INCREMENT=1; 
ALTER TABLE `sales_payment_transaction` AUTO_INCREMENT=1; 
ALTER TABLE `sales_order_aggregated_created` AUTO_INCREMENT=1; 
ALTER TABLE `sales_order_tax` AUTO_INCREMENT=1; 
ALTER TABLE `sales_order_tax_item` AUTO_INCREMENT=1; 
ALTER TABLE `sendfriend_log` AUTO_INCREMENT=1; 
ALTER TABLE `tag` AUTO_INCREMENT=1; 
ALTER TABLE `tag_relation` AUTO_INCREMENT=1; 
ALTER TABLE `tag_summary` AUTO_INCREMENT=1; 
ALTER TABLE `wishlist` AUTO_INCREMENT=1; 
ALTER TABLE `log_quote` AUTO_INCREMENT=1; 
ALTER TABLE `report_event` AUTO_INCREMENT=1; 
SET FOREIGN_KEY_CHECKS=1;

Vous pouvez utiliser cette fonction pour supprimer des ensembles d'attributs.

 $resource = Mage::getSingleton('core/resource');
$db_read = $resource->getConnection('core_read');

$attribute_sets = $db_read->fetchCol("SELECT attribute_set_id FROM " . $resource->getTableName("eav_attribute_set") . " WHERE attribute_set_id<> 4 AND entity_type_id=4");
foreach ($attribute_sets as $attribute_set_id) {
    try {
        Mage::getModel("eav/entity_attribute_set")->load($attribute_set_id)->delete();
    } catch (Exception $e) {
        echo $e->getMessage() . "\n";
    }
}

Et chercher cette table pour supprimer l'attribut

catalog_eav_attribute
eav_attribute
eav_attribute_set

Vérifiez la eav_attributecolonne is_user_definedafin que vous puissiez avoir une idée.

Mufaddal
la source
C'est exactement ce que je recherche! L'avez-vous également pour les attributs et les ensembles d'attributs?
Congelé
Non, je n'ai pas de code SQL pour les ensembles d'attributs et d'attributs, vous pouvez supprimer manuellement vos attributs et ensembles d'attributs s'il n'y a pas beaucoup d'entrée
Mufaddal
Malheureusement, il y en a beaucoup. Quoi qu'il en soit, merci pour cela, cela aidera certainement! Je devrais juste les trouver pour les attributs par moi-même je suppose.
Congelé
@Rune Ok vérifier ma réponse mise à jour
Mufaddal
2
Remarque sur l'entreprise, vous devez également tronquer: enterprise_customer_sales_flat_order enterprise_customer_sales_flat_order_order adresse enterprise_sales_order_grid_archive
Tegan Snyder
19

Vous pouvez simplement vider toute la base de données et Magento exécutera à nouveau tous ses scripts d'installation / de mise à niveau / de données lors du prochain chargement. Ceci "réinitialisera l'usine" Magento et détruira toutes vos modifications.

Une bonne habitude consiste à créer un module contenant tous les paramètres de base de votre magasin dans des scripts d'installation / de mise à niveau / de données. Cela présente l'avantage que ces paramètres sont stockés dans le contrôle de version et que tous les sites Web que vous avez pour le magasin (production, stockage intermédiaire, tests d'acceptation des utilisateurs, etc.) seront tenus à jour.

Si plusieurs personnes travaillent sur un site, nous créons même un nouveau module pour chaque groupe de paramètres afin que les versions n'entrent pas en conflit lorsque nous fusionnons du code.

Dans votre cas, je créerais un module qui configure tous les paramètres que vous souhaitez conserver. Si vous nettoyez la base de données, Magento sera complètement propre ET avec les paramètres souhaités!

Vous pouvez consulter les scripts d'installation / de mise à niveau du noyau de Magento pour voir comment Magento installe ses données / paramètres initiaux.

Erfan
la source
3
C’est une bonne idée, il n’ya qu’un seul problème: si vous avez installé des extensions, vous risquez de rencontrer le problème, elles ne sont pas testées de cette façon, elles génèrent donc des erreurs, car les scripts d’installation des modules s’exécutent avant certains autres modules et les dépendances ne sont pas remplies. Mais j'aime aussi cette méthode.
Fabian Blechschmidt
Pouvez-vous expliquer ça? Si vous insérez un paramètre basé sur un module tiers dans votre propre module, déclarez simplement le module tiers en tant que dépendance (dans votre application / etc / module.xml) et votre module install / upgradescripts sera exécuté après la troisième. -party modules '.
Erfan
1
oui, mais si le module tiers ne le fait pas ou insère des données dans l’installation au lieu de scripts de données, vous risquez d’avoir des problèmes en raison de la commande. Dans la plupart des cas, les développeurs supposent que magento est déjà installé ;-)
Fabian Blechschmidt
1
Un autre problème potentiel est que vous souhaitez peut-être conserver les paramètres de configuration et / ou le contenu du CMS. Il faudrait donc sauvegarder et importer de nouveau après avoir complètement vidé la base de données.
davidalger
1
@davidalger Le but de ces modules d'installation est de conserver les paramètres de configuration et / ou le contenu du CMS afin que vous n'ayez pas à les réimporter. En d'autres termes, vous pouvez ajouter des pages CMS dans vos scripts de données afin qu'elles soient réinsérées automatiquement une fois que vous avez effacé la base de données.
Erfan
7

Si vous n'avez besoin de rien, videz simplement la base de données et effectuez une nouvelle installation.

Courir en masse tronqué m'inquiète toujours des éventuels effets durables des relations brisées.

Purge rapide de la DB

En utilisant ce script ,

cd /path/to/my/magento/store
wget -O mage-dbpurge.sh sys.sonassi.com/mage-dbpurge.sh
chmod +x mage-dbpurge.sh
./mage-dbpurge.sh

Are you 100% sure you want to purge $DBNAME? [y/N]: y
Are you 110% sure you want to purge $DBNAME? [y/N]: y

MYSQL DB PURGE COMPLETE

Cela videra et supprimera complètement chaque table de la base de données. Ne l'utilisez pas si vous devez conserver quelque chose .

Ben Lessani - Sonassi
la source
La plupart d'entre eux deviennent vraiment fragmentaires. Commencer par fermer les dépendances de clé étrangère. Une base de données relationnelle n'est-elle pas censée tout supprimer automatiquement, par exemple si vous supprimez le produit clé, la commande clé, etc. Que se passe-t-il si vous manquez un nom de table dans cette liste de troncature en le faisant avec des relations de clé étrangère désactivées? Le site MagentoCommerce est resplendissant avec des messages d'erreur oddball qui apparaissent après la suppression de cette masse.
Fiasco Labs
Eh bien, en regardant son script, il va effectivement laisser tomber toutes les tables. En ce qui concerne la désactivation des vérifications de clés étrangères, vous en avez besoin pour ne pas avoir à déterminer le bon ordre pour supprimer toutes les tables.
Lee Saferite
@ LeeSaferite - Je pense que FiascoLabs faisait référence aux autres solutions proposant des solutions de type tronqué uniquement par rapport à l'oblitération totale que j'ai suggérée.
Ben Lessani - Sonassi
Exactement ce que je voulais dire!
Fiasco Labs
7

Avant de lancer un nouveau site Web de commerce électronique Magento, en phase de développement, vous devrez toujours effectuer des tests, ce qui nécessitera la création de commandes de tests et de clients pour garantir le bon fonctionnement de tous les processus, comme vous le souhaitez.

Cela peut souvent finir par laisser une charge de données de test dans le système que vous ne manquerez plus une fois le site lancé. Magento étant réputé pour insérer des données dans plusieurs tables de base de données, nous avons fourni le script SQL ci-dessous qui supprimera proprement toutes ces données de votre base de données Magento (et réinitialisera les compteurs d'incrément pour les ventes, les factures, les clients et les expéditions). Cela a été testé et confirmé sur les versions 1.4.0.1 à 1.9.0.1 de Magento.

#Tested on Magento CE 1.4.1.1 - 1.9.0.1

SET FOREIGN_KEY_CHECKS=0;

##############################
# SALES RELATED TABLES
##############################
TRUNCATE `sales_flat_creditmemo`;
TRUNCATE `sales_flat_creditmemo_comment`;
TRUNCATE `sales_flat_creditmemo_grid`;
TRUNCATE `sales_flat_creditmemo_item`;
TRUNCATE `sales_flat_invoice`;
TRUNCATE `sales_flat_invoice_comment`;
TRUNCATE `sales_flat_invoice_grid`;
TRUNCATE `sales_flat_invoice_item`;
TRUNCATE `sales_flat_order`;
TRUNCATE `sales_flat_order_address`;
TRUNCATE `sales_flat_order_grid`;
TRUNCATE `sales_flat_order_item`;
TRUNCATE `sales_flat_order_payment`;
TRUNCATE `sales_flat_order_status_history`;
TRUNCATE `sales_flat_quote`;
TRUNCATE `sales_flat_quote_address`;
TRUNCATE `sales_flat_quote_address_item`;
TRUNCATE `sales_flat_quote_item`;
TRUNCATE `sales_flat_quote_item_option`;
TRUNCATE `sales_flat_quote_payment`;
TRUNCATE `sales_flat_quote_shipping_rate`;
TRUNCATE `sales_flat_shipment`;
TRUNCATE `sales_flat_shipment_comment`;
TRUNCATE `sales_flat_shipment_grid`;
TRUNCATE `sales_flat_shipment_item`;
TRUNCATE `sales_flat_shipment_track`;
TRUNCATE `sales_invoiced_aggregated`;            # ??
TRUNCATE `sales_invoiced_aggregated_order`;        # ??
TRUNCATE `log_quote`;

ALTER TABLE `sales_flat_creditmemo_comment` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_creditmemo_grid` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_creditmemo_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_invoice` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_invoice_comment` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_invoice_grid` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_invoice_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_order` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_order_address` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_order_grid` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_order_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_order_payment` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_order_status_history` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_address` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_address_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_item_option` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_payment` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_shipping_rate` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_shipment` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_shipment_comment` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_shipment_grid` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_shipment_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_shipment_track` AUTO_INCREMENT=1;
ALTER TABLE `sales_invoiced_aggregated` AUTO_INCREMENT=1;
ALTER TABLE `sales_invoiced_aggregated_order` AUTO_INCREMENT=1;
ALTER TABLE `log_quote` AUTO_INCREMENT=1;

#########################################
# DOWNLOADABLE PURCHASED
#########################################
TRUNCATE `downloadable_link_purchased`;
TRUNCATE `downloadable_link_purchased_item`;

ALTER TABLE `downloadable_link_purchased` AUTO_INCREMENT=1;
ALTER TABLE `downloadable_link_purchased_item` AUTO_INCREMENT=1;

#########################################
# RESET ID COUNTERS
#########################################
TRUNCATE `eav_entity_store`;
ALTER TABLE  `eav_entity_store` AUTO_INCREMENT=1;


##############################
# CUSTOMER RELATED TABLES
##############################
TRUNCATE `customer_address_entity`;
TRUNCATE `customer_address_entity_datetime`;
TRUNCATE `customer_address_entity_decimal`;
TRUNCATE `customer_address_entity_int`;
TRUNCATE `customer_address_entity_text`;
TRUNCATE `customer_address_entity_varchar`;
TRUNCATE `customer_entity`;
TRUNCATE `customer_entity_datetime`;
TRUNCATE `customer_entity_decimal`;
TRUNCATE `customer_entity_int`;
TRUNCATE `customer_entity_text`;
TRUNCATE `customer_entity_varchar`;
TRUNCATE `tag`;
TRUNCATE `tag_relation`;
TRUNCATE `tag_summary`;
TRUNCATE `tag_properties`;            ## CHECK ME
TRUNCATE `wishlist`;
TRUNCATE `log_customer`;

ALTER TABLE `customer_address_entity` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_datetime` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_decimal` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_int` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_text` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_varchar` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_datetime` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_decimal` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_int` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_text` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_varchar` AUTO_INCREMENT=1;
ALTER TABLE `tag` AUTO_INCREMENT=1;
ALTER TABLE `tag_relation` AUTO_INCREMENT=1;
ALTER TABLE `tag_summary` AUTO_INCREMENT=1;
ALTER TABLE `tag_properties` AUTO_INCREMENT=1;
ALTER TABLE `wishlist` AUTO_INCREMENT=1;
ALTER TABLE `log_customer` AUTO_INCREMENT=1;


##############################
# ADDITIONAL LOGS
##############################
TRUNCATE `log_url`;
TRUNCATE `log_url_info`;
TRUNCATE `log_visitor`;
TRUNCATE `log_visitor_info`;
TRUNCATE `report_event`;
TRUNCATE `report_viewed_product_index`;
TRUNCATE `sendfriend_log`;
### ??? TRUNCATE `log_summary`

ALTER TABLE `log_url` AUTO_INCREMENT=1;
ALTER TABLE `log_url_info` AUTO_INCREMENT=1;
ALTER TABLE `log_visitor` AUTO_INCREMENT=1;
ALTER TABLE `log_visitor_info` AUTO_INCREMENT=1;
ALTER TABLE `report_event` AUTO_INCREMENT=1;
ALTER TABLE `report_viewed_product_index` AUTO_INCREMENT=1;
ALTER TABLE `sendfriend_log` AUTO_INCREMENT=1;
### ??? ALTER TABLE `log_summary` AUTO_INCREMENT=1;

SET FOREIGN_KEY_CHECKS=1;
extrémité est
la source
5

Si vous travaillez avec EE, vous devez également tronquer les tables de réécriture d'URL d'entreprise, car elles ne sont soumises à aucune contrainte de clé étrangère et lors de l'importation de données (sans définir explicitement d'URL), les URL des anciens produits seront connectées à votre nouveau produit importé. des produits.

SET FOREIGN_KEY_CHECKS = 0;
TRUNCATE TABLE `catalog_product_entity_url_key`;
TRUNCATE TABLE `catalog_category_entity_url_key`;
TRUNCATE TABLE `enterprise_url_rewrite`;
TRUNCATE TABLE `enterprise_url_rewrite_product_cl`;
TRUNCATE TABLE `enterprise_url_rewrite_category_cl`;
TRUNCATE TABLE `enterprise_catalog_category_rewrite`;
SET FOREIGN_KEY_CHECKS = 1;
Tobias
la source
4

Une chose que personne n’a mentionnée, c’est l’effacement des tables d’impôts. Si vous ne le faites pas, vous obtiendrez des entrées d'identifiant de commande répétées dans la table de taxe (lorsque vous passez des commandes à l'identifiant de commande de départ, le même identifiant s'affiche plusieurs fois). Les éléments multiples apparaîtront sur les factures / mémos en tant que plusieurs éléments de ligne, tant du côté administrateur que du côté client. Après avoir testé / effacé en utilisant les méthodes décrites dans les publications ci-dessus (et en n’effaçant pas les tables de taxes), au bout d’un moment, j’ai eu 10 postes d’impôt différents à afficher pour une seule commande.

Remarque - la taxe était / est toujours facturée correctement, mais sur les mémos et les factures, elle montrait tous les articles. Très déroutant si un client devait voir cela.

Donc, pour ajouter à ce qui précède:

TRUNCATE `sales_order_tax`;
TRUNCATE `sales_order_tax_item`;
ALTER TABLE `sales_order_tax` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_tax_item` AUTO_INCREMENT=1; 

Et pour faire bonne mesure:

TRUNCATE `sales_payment_transaction`;
ALTER TABLE `sales_payment_transaction` AUTO_INCREMENT=1; 
utilisateur4855
la source
2

Vous devriez avoir une base de données séparée pour les tests. Voir le cadre de test de magento. Toutes les idées pour effacer la base de données après les tests sont fausses.

Dmytro Zavalkin
la source
2

J'ai configuré un référentiel pour la maintenance de scripts SQL simples à exécuter avant le lancement d'un nouveau site Magento. Jusqu'à présent, ils peuvent aider:

  1. données de test vides de Mage; commandes, clients, rapports, journaux, etc.
  2. données de test vides de différentes extensions
  3. définir les identifiants souhaités pour la prochaine commande, la facture, l'expédition et les crédits

https://github.com/ccondrup/mage-reset
Aidez-nous à les améliorer!

ccondrup
la source
Ces scripts sont excellents, cependant, existe-t-il une version de MySQL avec laquelle ils sont supposés fonctionner? J'ai essayé sur un serveur avec une version MySQL plus basse que sur ma boîte de dev et j'ai eu ceci: ERROR 1064 (42000) à la ligne 160: vous avez une erreur dans votre syntaxe SQL; Consultez le manuel correspondant à la version de votre serveur MySQL pour connaître la syntaxe à utiliser près de 'DELIMITER || DROP PROCEDURE IF EXISTS ccdata_empty_testdata|| C'est peut-être moi, mais sinon super script !!!
Henry's Cat
@ Henry'sCat Merci. J'imagine que si vous utilisiez une très ancienne version de MySQL, elle ne prend peut-être pas en charge la commande DELIMITER. Je ne trouvais pas la version de MySQL dans laquelle il avait été introduit. Essayez-le dans l'interface de ligne de commande MySQL, si cela fonctionne là-bas, c'est peut-être juste une fin de ligne dans le script.
ccondrup
2

Juste mes 2 cents ...

Plutôt que de déterminer ce qu’il faut supprimer et de ne réaliser que ce que j’ai manqué plus tard, j’exécute quelques ordinateurs virtuels et j’utilise des instantanés à différentes étapes. De plus, j’ai deux sites distincts, l’un en direct et l’autre.

Il est alors facile d’avoir un script pour "restaurer" le test en direct quand j’en ai besoin. De plus, si le client a accès au système de test, il peut également jouer avant de faire quoi que ce soit en direct - nul besoin de restaurer à partir d'une sauvegarde, de perdre des commandes ou de modifier le processus ( bien que cela teste votre stratégie de sauvegarde). . )

Je pense que ce processus est bien meilleur et "plus sûr" que l'exécution d'un script personnalisé (obsolète?) Pour supprimer (trop?) Des éléments ...

(En outre, n'hésitez pas à voter ceci car je ne peux pas commenter pour le moment!)

KolonUK
la source
1

MYSQL Supprimez et créez la base de données, puis ajoutez les privilèges utilisateur et l'utilisateur administrateur magento.

DROP DATABASE <dbname>;
CREATE DATABASE <dbname>;
GRANT ALL PRIVILEGES ON <dbname>.* TO <dbusr>@localhost IDENTIFIED BY '<dbusr_pass>';
FLUSH PRIVILEGES;

Ajouter un administrateur Magento:

USE DB_NAME;
LOCK TABLES `admin_role` WRITE , `admin_user` WRITE;
SET @SALT = "rp";
SET @PASS = CONCAT(MD5(CONCAT( @SALT , "ADMIN_PASSWORD") ), CONCAT(":", @SALT ));
SELECT @EXTRA := MAX(extra) FROM admin_user WHERE extra IS NOT NULL;
INSERT INTO `admin_user` (firstname,lastname,email,username,password,created,lognum,reload_acl_flag,is_active,extra,rp_token_created_at) VALUES ('Firstname','Lastname','[email protected]','USER_NAME',@PASS,NOW(),0,0,1,@EXTRA,NOW());
INSERT INTO `admin_role` (parent_id,tree_level,sort_order,role_type,user_id,role_name) VALUES (1,2,0,'U',(SELECT user_id FROM admin_user WHERE username = 'USER_NAME'),'Firstname');
UNLOCK TABLES;
Garistar
la source
1

Basé sur une réponse de Mufaddal, j'ai préparé une requête pour effacer l'ordre et les données associées dans Magento 2.2.

SET FOREIGN_KEY_CHECKS=0; 
TRUNCATE `sales_creditmemo`; 
TRUNCATE `sales_creditmemo_comment`; 
TRUNCATE `sales_creditmemo_grid`; 
TRUNCATE `sales_creditmemo_item`; 
TRUNCATE `sales_invoice`; 
TRUNCATE `sales_invoice_comment`; 
TRUNCATE `sales_invoice_grid`; 
TRUNCATE `sales_invoice_item`; 
TRUNCATE `sales_order`; 
TRUNCATE `sales_order_address`; 
TRUNCATE `sales_order_grid`; 
TRUNCATE `sales_order_item`; 
TRUNCATE `sales_order_payment`; 
TRUNCATE `sales_order_status_history`; 
TRUNCATE `quote`; 
TRUNCATE `quote_address`; 
TRUNCATE `quote_address_item`; 
TRUNCATE `quote_item`; 
TRUNCATE `quote_item_option`; 
TRUNCATE `quote_payment`; 
TRUNCATE `quote_shipping_rate`; 
TRUNCATE `sales_shipment`; 
TRUNCATE `sales_shipment_comment`; 
TRUNCATE `sales_shipment_grid`; 
TRUNCATE `sales_shipment_item`; 
TRUNCATE `sales_shipment_track`; 
TRUNCATE `sales_invoiced_aggregated`; 
TRUNCATE `sales_invoiced_aggregated_order`; 
TRUNCATE `sales_payment_transaction`;
TRUNCATE `sales_order_aggregated_created`; 
TRUNCATE `sales_order_tax`;
TRUNCATE `sales_order_tax_item`;
TRUNCATE `sendfriend_log`; 
TRUNCATE `cache_tag`;
-- TRUNCATE `tag`;
-- TRUNCATE `tag_relation`;
-- TRUNCATE `tag_summary`;
TRUNCATE `wishlist`; 
-- TRUNCATE `log_quote`;
-- TRUNCATE `report_event`;
ALTER TABLE `sales_creditmemo` AUTO_INCREMENT=1; 
ALTER TABLE `sales_creditmemo_comment` AUTO_INCREMENT=1; 
ALTER TABLE `sales_creditmemo_grid` AUTO_INCREMENT=1; 
ALTER TABLE `sales_creditmemo_item` AUTO_INCREMENT=1; 
ALTER TABLE `sales_invoice` AUTO_INCREMENT=1; 
ALTER TABLE `sales_invoice_comment` AUTO_INCREMENT=1; 
ALTER TABLE `sales_invoice_grid` AUTO_INCREMENT=1; 
ALTER TABLE `sales_invoice_item` AUTO_INCREMENT=1; 
ALTER TABLE `sales_order` AUTO_INCREMENT=1; 
ALTER TABLE `sales_order_address` AUTO_INCREMENT=1; 
ALTER TABLE `sales_order_grid` AUTO_INCREMENT=1; 
ALTER TABLE `sales_order_item` AUTO_INCREMENT=1; 
ALTER TABLE `sales_order_payment` AUTO_INCREMENT=1; 
ALTER TABLE `sales_order_status_history` AUTO_INCREMENT=1; 
ALTER TABLE `quote` AUTO_INCREMENT=1; 
ALTER TABLE `quote_address` AUTO_INCREMENT=1; 
ALTER TABLE `quote_address_item` AUTO_INCREMENT=1; 
ALTER TABLE `quote_item` AUTO_INCREMENT=1; 
ALTER TABLE `quote_item_option` AUTO_INCREMENT=1; 
ALTER TABLE `quote_payment` AUTO_INCREMENT=1; 
ALTER TABLE `quote_shipping_rate` AUTO_INCREMENT=1; 
ALTER TABLE `sales_shipment` AUTO_INCREMENT=1; 
ALTER TABLE `sales_shipment_comment` AUTO_INCREMENT=1; 
ALTER TABLE `sales_shipment_grid` AUTO_INCREMENT=1; 
ALTER TABLE `sales_shipment_item` AUTO_INCREMENT=1; 
ALTER TABLE `sales_shipment_track` AUTO_INCREMENT=1; 
ALTER TABLE `sales_invoiced_aggregated` AUTO_INCREMENT=1; 
ALTER TABLE `sales_invoiced_aggregated_order` AUTO_INCREMENT=1; 
ALTER TABLE `sales_payment_transaction` AUTO_INCREMENT=1; 
ALTER TABLE `sales_order_aggregated_created` AUTO_INCREMENT=1; 
ALTER TABLE `sales_order_tax` AUTO_INCREMENT=1; 
ALTER TABLE `sales_order_tax_item` AUTO_INCREMENT=1; 
ALTER TABLE `sendfriend_log` AUTO_INCREMENT=1; 
-- ALTER TABLE `tag` AUTO_INCREMENT=1;
-- ALTER TABLE `tag_relation` AUTO_INCREMENT=1;
-- ALTER TABLE `tag_summary` AUTO_INCREMENT=1;
ALTER TABLE `cache_tag` AUTO_INCREMENT=1;
-- ALTER TABLE `wishlist` AUTO_INCREMENT=1;
-- ALTER TABLE `log_quote` AUTO_INCREMENT=1;
-- ALTER TABLE `report_event` AUTO_INCREMENT=1;
SET FOREIGN_KEY_CHECKS=1;
Stanislav Potapenko
la source
0

Vous avez simplement obtenu votre base de données phpMyadmin, puis ouvrez la table sales_flat_order, puis supprimez simplement les données de ce tableau et vos ordres de test seront effacés. Pas besoin de code, de commandes ou d'extensions. cool.

Asif Mehmood
la source
0

C'est une réponse tardive, mais cela pourrait être utile.

Je développe un site Web de commerce électronique basé sur Magento 1.7 et j'ai tendance à utiliser le TDD.

Je pense que nous ne devrions pas déranger en nettoyant manuellement la base de données pendant que nous pouvons utiliser Magento beginTransactionetrollback méthodes.

Voici un exemple

public function setUp()
{
    parent::setUp();
    /** @var Mage_Core_Model_Resource $core */
    $core = Mage::getSingleton('core/resource');
    $core->getConnection('default_write')->beginTransaction();
}

public function tearDown()
{
    parent::tearDown();
    /** @var Mage_Core_Model_Resource $core */
    $core = Mage::getSingleton('core/resource');
    $core->getConnection('default_write')->rollBack();
    Mage::reset();
}

Cette réponse est inspirée par cette réponse de Magento , visitez-la pour en savoir plus.

Mohamed Abdul-Fattah
la source