Dọn dẹp Magento sau khi thử nghiệm


75

Tôi hiện đang làm rất nhiều bài kiểm tra trong Magento để tôi có thể làm quen với nó. Thật không may, cơ sở dữ liệu vô cùng lộn xộn với các bài kiểm tra của tôi. Tôi muốn xóa cơ sở dữ liệu để tôi có thể bắt đầu lại. Điều này có nghĩa là làm như sau:

  • Dọn dẹp tất cả các sản phẩm
  • Xóa tất cả các thuộc tính
  • Xóa tất cả các bộ thuộc tính
  • Xóa tất cả các loại
  • Xóa tất cả các đơn đặt hàng, giao hàng, giao dịch, vv

Tôi đã tìm thấy một bài đăng trên các diễn đàn Magento để xóa các sản phẩm, đó là SQL sau:

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;

Tôi sẽ cần điều tương tự cho những người khác được đề cập. Thật không may, tôi không biết bảng nào đang chứa tất cả các dữ liệu khác nhau, nếu không tôi sẽ tự làm điều đó. Tôi cũng không muốn xóa các bảng sai một cách tình cờ. Tôi hy vọng bạn có thể giúp tôi!


Dữ liệu nào từ cơ sở dữ liệu thử nghiệm của bạn mà bạn vẫn cần? Bạn đã xem xét xuất dữ liệu đó (ví dụ cấu hình của bạn core_config_data) và chỉ bắt đầu lại từ đầu?
Alex

1
Ngoài ra, hãy xem github.com/netz98/n98-magerun#stripped-database-dump - điều này cho phép bạn xuất cơ sở dữ liệu mà không cần đơn đặt hàng, v.v. và sau đó bạn có thể nhập lại.
Alex

@Alex Tôi không biết phải giữ gì vì tôi đã nhận được thứ này từ bên thứ ba làm cơ sở của cửa hàng. Tôi cần tiếp tục phát triển nó, nhưng tôi không hoàn toàn chắc chắn những gì tôi có thể vứt bỏ và những gì không. Ngoài ra, tôi sẽ xem liên kết bạn đưa ra.
Deep Frozen

Tôi vô tình chỉ cần xóa tất cả các thuộc tính. Bao gồm các thuộc tính Magento System. Tôi không thể tạo ra sản phẩm bây giờ. Có cách nào để khôi phục các thuộc tính hệ thống lõi Magento mặc định không?
Jelly_Doughnut

@Jelly_Doughnut Tôi khuyên bạn nên hỏi một câu hỏi riêng
Kristof tại Fooman

Câu trả lời:


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;

Cho đơn đặt hàng

    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;

Bạn có thể sử dụng chức năng này để xóa các tập thuộc tính.

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

Và tìm bảng này để loại bỏ thuộc tính

catalog_eav_attribute
eav_attribute
eav_attribute_set

Kiểm tra eav_attributecột is_user_definedđể bạn có thể có được một số ý tưởng.


Đây chính xác là những gì tôi đang tìm kiếm! Bạn cũng có nó cho các thuộc tính và bộ thuộc tính?
Deep Frozen

Không, tôi không có sql cho các tập thuộc tính và thuộc tính, bạn có thể xóa thủ công các tập thuộc tính và thuộc tính của mình nếu không có nhiều mục
Mufaddal

Thật không may có rất nhiều trong số họ. Dù sao, cảm ơn bạn vì những điều này, nó chắc chắn sẽ giúp! Tôi sẽ chỉ phải tìm chúng cho các thuộc tính một mình tôi đoán.
Deep Frozen

@Rune Ok kiểm tra câu trả lời cập nhật của tôi
Mufaddal

2
Lưu ý về Doanh nghiệp, bạn cũng cần cắt bớt: Enterprise_customer_sales_flat_order Enterprise_customer_sales_flat_order_address Enterprise_sales_order_grid_archive
Tegan Snyder

19

Bạn chỉ có thể làm trống toàn bộ cơ sở dữ liệu và Magento sẽ chạy lại tất cả các tập lệnh cài đặt / nâng cấp / dữ liệu của nó trong lần tải tiếp theo. Điều này sẽ "khôi phục cài đặt gốc" Magento và sẽ phá hủy tất cả các thay đổi của bạn.

Một thói quen tốt là tạo một mô-đun chứa tất cả các cài đặt cửa hàng cơ bản của bạn bên trong các tập lệnh cài đặt / nâng cấp / dữ liệu. Điều này có lợi ích là các cài đặt này được lưu trữ trong kiểm soát phiên bản và tất cả các trang web khác nhau mà bạn có cho cửa hàng (sản xuất, dàn dựng, thử nghiệm chấp nhận của người dùng, v.v.) sẽ được cập nhật.

Nếu có nhiều người làm việc trên một trang web, chúng tôi thậm chí sẽ tạo một mô-đun mới cho mọi nhóm cài đặt để các phiên bản không xung đột khi chúng tôi hợp nhất mã.

Trong trường hợp của bạn, tôi sẽ tạo một mô-đun thiết lập tất cả các cài đặt bạn muốn giữ. Nếu bạn xóa cơ sở dữ liệu, Magento sẽ hoàn toàn sạch VÀ bao gồm các cài đặt bạn muốn!

Bạn có thể xem các tập lệnh cài đặt / nâng cấp của lõi Magento để xem Magento cài đặt dữ liệu / cài đặt ban đầu như thế nào.


3
Đây là một ý tưởng tốt, chỉ có một vấn đề: Nếu bạn đã cài đặt các tiện ích mở rộng, bạn có thể gặp sự cố, rằng chúng không được kiểm tra theo cách này, vì vậy chúng sẽ gây ra lỗi, vì các tập lệnh cài đặt của các mô-đun chạy trước một số mô-đun khác và phụ thuộc không được thực hiện. Nhưng tôi cũng thích phương pháp này.
Fabian Blechschmidt

Bạn có thể giải thích điều đó không? Nếu bạn đang chèn một cài đặt dựa trên mô-đun của bên thứ ba trong mô-đun của riêng bạn, chỉ cần khai báo mô-đun của bên thứ ba là phụ thuộc (trong ứng dụng / etc / module.xml) và cài đặt / nâng cấp mô-đun của bạn sẽ chạy sau phần ba mô-đun -party '.
Erfan

1
có, nhưng nếu mô-đun bên thứ ba không làm điều đó hoặc chèn dữ liệu vào cài đặt thay vì tập lệnh dữ liệu, bạn có thể gặp sự cố do đơn đặt hàng. Trong hầu hết các trường hợp, các nhà phát triển cho rằng magento đã được cài đặt ;-)
Fabian Blechschmidt

1
Một vấn đề tiềm năng khác là bạn có thể muốn duy trì cài đặt cấu hình và / hoặc nội dung CMS. Vì vậy, nó sẽ phải được sao lưu và nhập lại sau khi xóa toàn bộ cơ sở dữ liệu.
davidalger

1
@davidalger điểm của các mô-đun thiết lập này là giữ các cài đặt cấu hình và / hoặc nội dung CMS để bạn không phải nhập lại chúng. tức là bạn có thể thêm các trang CMS trong tập lệnh dữ liệu của mình để chúng được chèn lại tự động sau khi bạn xóa db.
Erfan

7

Nếu bạn không cần bất cứ thứ gì cả - chỉ cần làm trống toàn bộ DB và cài đặt lại sạch sẽ.

Chạy cắt ngắn hàng loạt luôn làm tôi lo lắng về bất kỳ ảnh hưởng lâu dài tiềm tàng nào của các mối quan hệ chính bị phá vỡ.

Thanh lọc DB nhanh

Sử dụng tập lệnh này ,

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

Điều đó sẽ hoàn toàn trống rỗng và loại bỏ mọi bảng duy nhất trong cơ sở dữ liệu. Không sử dụng nó nếu bạn cần giữ lại bất cứ thứ gì .


Hầu hết trong số này thực sự nhận được sơ sài. Bắt đầu với việc tắt các phụ thuộc khóa ngoại. Không phải là cơ sở dữ liệu quan hệ có nghĩa vụ tự động xóa mọi thứ nếu bạn xóa sản phẩm chính, đơn đặt hàng bán khóa, v.v. trong khi phụ thuộc khóa ngoại được kích hoạt vì tất cả các bản ghi trong tất cả các bảng được tham chiếu đều xóa với mục cấp cao nhất? Điều gì sẽ xảy ra nếu bạn bỏ lỡ một tên bảng trong danh sách cắt ngắn đó khi tắt các mối quan hệ khóa ngoài? Trang web MagentoC Commerce rất rực rỡ với các thông báo lỗi lẻ xuất hiện sau khi xóa hàng loạt.
Phòng thí nghiệm Fiasco

Chà, nhìn vào kịch bản của anh ấy, nó thực sự sẽ rơi mọi bàn. Đối với việc vô hiệu hóa kiểm tra khóa ngoại, bạn cần điều đó để bạn không phải tìm ra thứ tự thích hợp để loại bỏ tất cả các bảng.
Lee Saferite

@LeeSaferite - Tôi nghĩ rằng FiascoLabs đã đề cập đến các giải pháp khác cung cấp các giải pháp loại chỉ cắt ngắn so với tổng số xóa mà tôi đề xuất.
Ben Lessani - Sonassi

Chính xác những gì tôi muốn nói!
Phòng thí nghiệm Fiasco

7

Trước khi ra mắt trang web Thương mại điện tử Magento mới, ở giai đoạn phát triển, bạn sẽ luôn phải tiến hành thử nghiệm và điều này sẽ yêu cầu tạo đơn hàng thử nghiệm và khách hàng để đảm bảo rằng tất cả các quy trình hoạt động chính xác và như bạn mong đợi.

Điều này thường có thể kết thúc để lại một tải dữ liệu thử nghiệm trong hệ thống mà bạn sẽ không muốn một khi trang web được khởi chạy. Magento nổi tiếng với việc chèn dữ liệu vào nhiều bảng cơ sở dữ liệu, vì vậy chúng tôi đã cung cấp tập lệnh SQL bên dưới sẽ xóa sạch tất cả dữ liệu này khỏi cơ sở dữ liệu Magento của bạn (và đặt lại bộ đếm tăng cho bán hàng, hóa đơn, khách hàng và giao hàng). Điều này đã được thử nghiệm và xác nhận làm việc trên các phiên bản Magento từ 1.4.0.1 đến 1.9.0.1.

#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

Nếu bạn đang làm việc với EE, bạn cũng nên cắt bớt các bảng viết lại url doanh nghiệp, vì chúng không có ràng buộc khóa ngoại và khi nhập dữ liệu (nhưng không đặt url rõ ràng) các url của sản phẩm cũ sẽ được kết nối với dữ liệu mới được nhập của bạn các sản phẩm.

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

Một điều không ai đã đề cập là xóa bảng thuế. Nếu bạn không, bạn sẽ nhận được các mục nhập Id đơn hàng lặp lại trong bảng thuế (khi bạn đặt lại đơn hàng tại Id Đơn hàng bắt đầu, bạn sẽ có cùng một Id hiển thị nhiều lần). Nhiều mục sẽ hiển thị trên hóa đơn / ghi nhớ dưới dạng nhiều mục hàng, ở cả phía quản trị viên và khách hàng. Sau khi thử nghiệm / xóa bằng các phương pháp trong các bài viết trên (và không xóa các bảng thuế), sau một thời gian tôi đã có 10 mục hàng thuế khác nhau hiển thị cho một đơn hàng.

Lưu ý - thuế đã / vẫn được tính chính xác, nhưng trên bản ghi nhớ và hóa đơn, nó đã hiển thị tất cả các mục. Rất khó hiểu nếu một khách hàng đã nhìn thấy điều đó.

Vì vậy, để thêm vào ở trên:

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; 

Và cho các biện pháp tốt:

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

2

Bạn nên có db riêng cho các bài kiểm tra. Xem khung kiểm tra magento. Tất cả các ý tưởng để xóa db sau khi kiểm tra là sai.


2

Tôi thiết lập một kho lưu trữ để duy trì các tập lệnh SQL đơn giản để chạy trước khi khởi chạy một trang Magento mới. Cho đến nay họ có thể giúp đỡ:

  1. dữ liệu thử nghiệm trống từ Mage; đơn đặt hàng, khách hàng, báo cáo, nhật ký, vv
  2. dữ liệu thử nghiệm trống từ các phần mở rộng khác nhau
  3. đặt ID mong muốn cho đơn hàng tiếp theo, hóa đơn, giao hàng và tín dụng

https://github.com/ccondrup/mage-reset
Giúp cải thiện chúng!


Những đoạn script này rất hay, tuy nhiên, có phiên bản MySQL nào mà chúng được cho là chạy cùng không? Tôi đã thử trên một máy chủ có phiên bản MySQL thấp hơn trên hộp dev của tôi và tôi đã nhận được điều này: ERROR 1064 (42000) ở dòng 160: Bạn gặp lỗi trong cú pháp SQL của mình; kiểm tra hướng dẫn tương ứng với phiên bản máy chủ MySQL của bạn để biết đúng cú pháp để sử dụng gần 'DELIMITER | | THỦ TỤC DROP NẾU EXISTS ccdata_empty_testdata| | Đây có thể là tôi, nhưng nếu không thì kịch bản tuyệt vời !!!
Mèo của Henry

@ Henry'sCat Cảm ơn - Tôi đoán nếu sử dụng phiên bản MySQL rất cũ thì nó có thể không hỗ trợ lệnh DELIMITER. Tôi không thể tìm thấy phiên bản MySQL nào được giới thiệu. Hãy thử nó trong MySQL CLI, nếu nó hoạt động ở đó thì có lẽ đó chỉ là vấn đề kết thúc dòng trong kịch bản.
ccondrup

2

Chỉ 2 xu của tôi ...

Thay vì tìm ra những gì cần xóa và chỉ nhận ra những gì tôi đã bỏ lỡ sau đó, tôi chạy một số máy ảo và tôi sử dụng ảnh chụp nhanh ở các giai đoạn khác nhau, cộng với tôi có hai trang web riêng biệt - một trang web trực tiếp và một thử nghiệm.

Sau đó, thật dễ dàng để có một kịch bản để "khôi phục" thử nghiệm trực tiếp khi tôi cần. Ngoài ra, nếu khách hàng có quyền truy cập vào hệ thống kiểm tra, họ cũng có thể chơi với nó trước khi thực hiện bất kỳ điều gì với trực tiếp - không cần khôi phục từ bản sao lưu và mất đơn đặt hàng và các thay đổi khác trong quy trình ( mặc dù nó kiểm tra chiến lược sao lưu của bạn .. . )

Tôi nghĩ rằng đây là một quá trình tốt hơn và "an toàn" hơn nhiều so với việc chạy một tập lệnh tùy chỉnh (lỗi thời?) Để xóa (quá nhiều?) ...

(Ngoài ra, vui lòng tải xuống phần này vì tôi chưa thể nhận xét!)


1

MYSQL Thả và tạo DB sau đó thêm đặc quyền người dùng và người dùng quản trị magento.

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

Thêm người dùng quản trị 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

Dựa trên câu trả lời từ Mufaddal, tôi đã chuẩn bị truy vấn để xóa thứ tự và dữ liệu liên quan trong 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

Đơn giản chỉ cần lấy cơ sở dữ liệu của bạn phpMyadmin và sau đó mở bảng sales_flat_ordervà sau đó chỉ cần xóa dữ liệu khỏi tabel này và các đơn đặt hàng thử nghiệm của bạn sẽ bị xóa. Không cần bất kỳ mã, lệnh hoặc phần mở rộng. mát mẻ.


0

Đây là một câu trả lời muộn, nhưng nó có thể hữu ích.

Tôi đang phát triển một trang web thương mại điện tử dựa trên Magento 1.7 và tôi có xu hướng TDD.

Tôi nghĩ chúng ta không nên bận tâm bằng cách dọn dẹp cơ sở dữ liệu theo cách thủ công trong khi chúng ta có thể sử dụng Magento beginTransactionrollbackphương thức.

Đây là một ví dụ

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

Câu trả lời này được lấy cảm hứng từ câu trả lời Magento này , hãy truy cập nó để đọc thêm.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.