테스트 후 마 젠토 제거


75

나는 현재 Magento에서 많은 테스트를 수행하고 있으므로 익숙해 질 수 있습니다. 불행히도 데이터베이스는 테스트로 인해 복잡합니다. 다시 시작할 수 있도록 데이터베이스를 정리하고 싶습니다. 이것은 다음을 수행하는 것을 의미합니다.

  • 모든 제품 지우기
  • 모든 속성 지우기
  • 모든 속성 세트 지우기
  • 모든 카테고리 지우기
  • 모든 주문, 선적, 거래 등을 청산

Magento 포럼에서 제품을 지우는 게시물을 찾았습니다. 이는 다음 SQL입니다.

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;

언급 된 다른 사람들도 마찬가지입니다. 불행히도 나는 모든 다른 데이터를 보유하고있는 테이블을 모르겠습니다. 그렇지 않으면 직접 수행했을 것입니다. 또한 실수로 잘못된 테이블을 지우고 싶지 않습니다. 당신이 나를 도울 수 있기를 바랍니다!


테스트 데이터베이스의 어떤 데이터가 여전히 필요합니까? 해당 데이터 내보내기 (예 : 구성 core_config_data) 를 고려 하고 다시 시작 했습니까?
Alex

1
또한 github.com/netz98/n98-magerun#stripped-database-dump를 살펴 보십시오 -주문없이 데이터베이스를 내보내고 다시 가져올 수 있습니다.
Alex

@Alex 나는 상점의 기초를 만든 제 3 자로부터 이것을 얻었 기 때문에 무엇을 보관 해야할지 잘 모르겠습니다. 나는 계속 스스로 개발해야하지만, 무엇을 버릴 수 있고 무엇을 버릴 수 있는지 완전히 확신하지 못합니다. 또한, 당신이 준 링크를 살펴볼 것입니다.
Deep Frozen

실수로 모든 속성을 지 웠습니다. 마 젠토 시스템 속성 포함. 지금은 제품을 만들 수 없습니다. 기본 Magento 핵심 시스템 속성을 복원하는 방법이 있습니까?
Jelly_Doughnut

@Jelly_Doughnut 나는 별도의 질문을 할 것을 제안합니다
Kristof at Fooman

답변:


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;

주문

    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;

이 기능을 사용하여 속성 세트를 삭제할 수 있습니다.

 $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";
    }
}

속성을 제거하려면이 테이블을 찾으십시오.

catalog_eav_attribute
eav_attribute
eav_attribute_set

아이디어를 얻을 수 있도록 eav_attribute열을 확인하십시오 is_user_defined.


이것이 바로 내가 찾는 것입니다! 속성 및 속성 세트에도 포함되어 있습니까?
Deep Frozen

아니요, 속성 및 속성 집합에 대한 SQL이 없습니다. 항목이 많지 않은 경우 속성 및 속성 집합을 수동으로 삭제할 수 있습니다.
Mufaddal

불행히도 많은 것들이 있습니다. 어쨌든, 이것에 대해 감사합니다, 확실히 도움이 될 것입니다! 나는 단지 내가 추측하는대로 속성에 대해 그것들을 찾아야 할 것이다.
Deep Frozen

@Rune Ok 업데이트 된 답변 확인
Mufaddal

2
기업에 참고 당신은 또한 절단해야 enterprise_customer_sales_flat_order enterprise_customer_sales_flat_order_address enterprise_sales_order_grid_archive
Tegan 스나이더

19

전체 데이터베이스를 비우면 Magento가 다음 페이지로드에서 모든 설치 / 업그레이드 / 데이터 스크립트를 다시 실행합니다. 이렇게하면 Magento가 "초기화"되고 모든 변경 사항이 삭제됩니다.

좋은 습관은 설치 / 업그레이드 / 데이터 스크립트 내에 모든 기본 저장소 설정을 포함하는 모듈을 작성하는 것입니다. 이는 이러한 설정이 버전 관리에 저장되며 상점에 대한 모든 다른 웹 사이트 (생산, 준비, 사용자 승인 테스트 등)가 최신 상태로 유지된다는 이점이 있습니다.

한 사이트에서 여러 사람이 작업하는 경우 모든 설정 그룹에 대해 새 모듈을 만들어서 코드를 병합 할 때 버전이 충돌하지 않습니다.

귀하의 경우, 유지하려는 모든 설정을 설정하는 모듈을 작성합니다. 데이터베이스를 지우면 Magento는 완전히 깨끗하고 원하는 설정을 포함합니다!

Magento가 초기 데이터 / 설정을 어떻게 설치하는지 보려면 Magento 코어의 설치 / 업그레이드 스크립트를 살펴볼 수 있습니다.


3
이것은 좋은 생각입니다. 한 가지 문제 만 있습니다. 확장 프로그램을 설치 한 경우 문제가 발생할 수 있습니다. 이러한 방식으로 테스트되지 않았으므로 모듈의 설치 스크립트가 특정 다른 모듈보다 먼저 실행되기 때문에 오류가 발생합니다. 종속성이 충족되지 않습니다. 그러나 나는이 방법도 좋아합니다.
Fabian Blechschmidt

설명 할 수 있습니까? 자신의 모듈에 타사 모듈을 기반으로 설정을 삽입하는 경우 타사 모듈을 종속성으로 선언하면 (app / etc / module.xml에서) 모듈 설치 / 업그레이드 스크립트가 세 번째 이후에 실행됩니다 파티 모듈 '.
Erfan

1
예, 그러나 타사 모듈이 그렇게하지 않거나 데이터 스크립트 대신 설치에 데이터를 삽입하면 순서로 인해 문제가 발생할 수 있습니다. 대부분의 경우 개발자는 magento가 이미 설치되어 있다고 가정합니다. ;-)
Fabian Blechschmidt

1
또 다른 잠재적 인 문제는 구성 설정 및 / 또는 CMS 내용을 유지 관리 할 수 ​​있다는 것입니다. 따라서 데이터베이스를 완전히 지우고 나면 백업 및 다시 가져와야합니다.
davidalger

1
@davidalger이 설정 모듈의 요점은 구성 설정 및 / 또는 CMS 컨텐츠를 유지하여 다시 가져올 필요가 없도록하는 것입니다. 즉, 데이터 스크립트에 CMS 페이지를 추가하여 db를 지운 후에 자동으로 다시 삽입되도록 할 수 있습니다.
Erfan

7

전혀 필요하지 않은 경우 전체 DB를 비우고 새로 설치하십시오.

대량 자르기를 실행하면 항상 깨진 키 관계의 잠재적 인 영향에 대해 걱정합니다.

빠른 DB 퍼지

이 사용 스크립트를 ,

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

완전히 비워지고 데이터베이스의 모든 단일 테이블이 제거됩니다. 무엇이든 보관해야 할 경우에는 사용하지 마십시오 .


이것들의 대부분은 실제로 스케치됩니다. 외래 키 종속성을 종료하는 것으로 시작합니다. 외래 키 종속성이 활성화되어 있고 참조 된 모든 테이블의 모든 레코드가 최상위 항목으로 삭제되므로 관계형 데이터베이스가 주요 제품, 주요 판매 주문 등을 삭제하는 경우 모든 것을 자동으로 삭제하도록되어 있지 않습니까? 해당 잘림 목록에서 외래 키 관계가 종료 된 상태에서 테이블 이름을 놓치면 어떻게됩니까? MagentoCommerce 사이트는 이러한 대량 삭제 후에 나타나는 이상한 오류 메시지와 함께 화려합니다.
Fiasco Labs

글쎄, 그의 대본을 보면 실제로 모든 테이블을 떨어 뜨릴 것입니다. 외래 키 검사를 비활성화하려면 모든 테이블을 삭제하기 위해 올바른 순서를 알아낼 필요가 없습니다.
이 Saferite

@LeeSaferite-FiascoLabs는 내가 제안한 총 제거와 비교하여 절단 전용 유형 솔루션을 제공하는 다른 솔루션을 언급하고 있다고 생각합니다 .
Ben Lessani-Sonassi

정확히 내가 의미 한 것!
Fiasco Labs

7

개발 단계에서 새로운 Magento eCommerce 웹 사이트를 시작하기 전에 항상 테스트를 수행해야하며 모든 프로세스가 올바르게 작동하고 예상대로 작동하도록하려면 테스트 주문 및 고객을 작성해야합니다.

이것은 종종 사이트가 시작되면 원하지 않는 시스템에 많은 테스트 데이터를 남길 수 있습니다. Magento는 여러 데이터베이스 테이블에 데이터를 삽입하는 것으로 유명하므로 Magento 데이터베이스에서이 데이터를 모두 삭제하고 판매, ​​송장, 고객 및 배송에 대한 증분 카운터를 재설정하는 아래 SQL 스크립트를 제공했습니다. 이것은 1.4.0.1에서 1.9.0.1까지의 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;

5

EE를 사용하는 경우 외래 키 제약 조건이없고 데이터 가져 오기 (URL을 명시 적으로 설정하지 않음)가 없으므로 엔터프라이즈 URL 다시 쓰기 테이블도 잘라야합니다. 기존 제품의 URL은 새로 가져온 가져 오기에 연결됩니다 제품.

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;

4

아무도 언급하지 않은 것은 세금 표 정리입니다. 그렇지 않으면 세금 테이블에 반복 주문 ID 항목이 표시됩니다 (시작 주문 ID에서 다시 주문하면 동일한 ID가 여러 번 표시됨). 여러 항목은 송장 / 메모장에 관리자 및 클라이언트 측에서 여러 개별 항목으로 표시됩니다. 위의 게시물의 방법을 사용하여 테스트 / 청산 한 후 (세금 테이블을 지우지 않음) 잠시 후 단일 주문에 대해 10 개의 서로 다른 세금 라인 항목이 표시되었습니다.

참고-세금은 여전히 ​​올바르게 청구되었지만 메모 및 송장에 모든 품목이 표시되었습니다. 클라이언트가 그것을보고 있다면 매우 혼란 스럽습니다.

위의 내용을 추가하려면

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; 

그리고 좋은 측정을 위해 :

TRUNCATE `sales_payment_transaction`;
ALTER TABLE `sales_payment_transaction` AUTO_INCREMENT=1; 

2

테스트를 위해 별도의 db가 있어야합니다. magento 테스트 프레임 워크를 참조하십시오. 테스트 후 db를 지우려는 모든 아이디어가 잘못되었습니다.


2

새 Magento 사이트를 시작하기 전에 실행할 간단한 SQL 스크립트를 유지하기위한 저장소를 설정했습니다. 지금까지 그들은 도울 수 있습니다.

  1. 마법사의 빈 테스트 데이터; 주문, 고객, 보고서, 로그 등
  2. 다양한 확장에서 빈 테스트 데이터
  3. 다음 주문, 송장, 배송 및 대변 메모에 원하는 ID를 설정하십시오.

https://github.com/ccondrup/mage-reset
개선에 도움을주세요!


그러나 이러한 스크립트는 훌륭하지만 실행할 MySQL 버전이 있습니까? 내 dev 상자보다 MySQL 버전이 낮은 서버에서 시도했는데 다음과 같은 결과가 나옵니다. 160 번 줄의 ERROR 1064 (42000) : SQL 구문에 오류가 있습니다. 'DELIMITER || DROP PROCEDURE IF EXISTS ccdata_empty_testdata|| '근방에서 사용할 올바른 구문은 MySQL 서버 버전에 해당하는 매뉴얼을 확인하십시오. 이것은 나일 수도 있지만 그렇지 않으면 훌륭한 스크립트입니다!
Henry 's Cat

@ Henry'sCat Thanks-아주 오래된 MySQL 버전을 사용하는 경우 DELIMITER 명령을 지원하지 않을 수 있습니다. 소개 된 MySQL 버전을 찾을 수 없습니다. MySQL CLI에서 사용해보십시오. 작동하는 경우 스크립트의 줄 끝 문제 일 수 있습니다.
ccondrup

2

내 2 센트 만 ...

삭제할 항목을 파악하고 나중에 놓친 내용 만 깨닫는 대신 몇 개의 VM을 실행하고 다양한 단계에서 스냅 샷을 사용하며, 각각 하나의 라이브 사이트와 하나의 테스트 사이트가 있습니다.

그런 다음 필요할 때 실시간으로 테스트를 "복원"하는 스크립트를 만드는 것이 쉽습니다. 또한 고객이 테스트 시스템에 액세스 할 수있는 경우 백업에서 복원하거나 주문 및 프로세스의 기타 변경 사항을 잃을 필요가 없습니다 ( 백업 전략을 테스트하지만). . )

나는 (너무 많이?) 물건을 삭제하기 위해 사용자 정의 (오래된?) 스크립트를 실행하는 것보다 훨씬 더 좋고 안전한 프로세스라고 생각합니다 ...

(또한 아직 댓글을 달 수 없으므로 자유롭게 의견을 보내십시오!)


1

MYSQL DB를 삭제하고 생성 한 다음 사용자 권한과 magento 관리자를 추가하십시오.

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

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@example.com','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;

1

Mufaddal의 답변을 바탕으로 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;

0

데이터베이스 phpMyadmin을 가져 와서 테이블을 연 sales_flat_order다음이 테이블에서 해당 데이터를 제거하면 테스트 순서가 지워집니다. 코드, 명령 또는 확장이 필요하지 않습니다. 시원한.


0

이것은 늦은 답변이지만 도움이 될 수 있습니다.

Magento 1.7을 기반으로 한 전자 상거래 웹 사이트를 개발 중이며 TDD하는 경향이 있습니다.

Magento beginTransactionrollback메소드를 사용할 수있는 동안 데이터베이스를 수동으로 정리하여 신경 쓰지 않아야한다고 생각 합니다.

여기에 예가 있습니다

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();
}

이 답변은 이 Magento answer 에서 영감을 얻었으며 자세한 내용을 보려면 방문하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.