好的,经过我的实验,很好用。
SET FOREIGN_KEY_CHECKS=0; -- Here's where we reset the orders TRUNCATE `sales_flat_order`; TRUNCATE `sales_flat_order_address`; TRUNCATE `sales_flat_order_grid`; TRUNCATE `sales_flat_order_item`; 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_order_payment`; TRUNCATE `sales_flat_quote_payment`; TRUNCATE `sales_flat_shipment`; TRUNCATE `sales_flat_shipment_item`; TRUNCATE `sales_flat_shipment_grid`; TRUNCATE `sales_flat_invoice`; TRUNCATE `sales_flat_invoice_grid`; TRUNCATE `sales_flat_invoice_item`; TRUNCATE `sendfriend_log`; TRUNCATE `tag`; TRUNCATE `tag_relation`; TRUNCATE `tag_summary`; TRUNCATE `wishlist`; TRUNCATE `log_quote`; TRUNCATE `report_event`; 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_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 `sendfriend_log` AUTO_INCREMENT=1; ALTER TABLE `sales_flat_order_payment` AUTO_INCREMENT=1; ALTER TABLE `sales_flat_quote_payment` AUTO_INCREMENT=1; ALTER TABLE `sales_flat_shipment` AUTO_INCREMENT=1; ALTER TABLE `sales_flat_shipment_item` AUTO_INCREMENT=1; ALTER TABLE `sales_flat_invoice` 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_shipment_grid` 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; -- Here's where we reset the 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; -- This is to Reset all the ID counters TRUNCATE `eav_entity_store`; ALTER TABLE `eav_entity_store` AUTO_INCREMENT=1; SET FOREIGN_KEY_CHECKS=1;
或者使用源码删除所有订单(不删除用户)
<?php /** * @author Dejan Radic <[email protected]> */ if (version_compare(phpversion(), '5.2.0', '<')===true) { echo '<div style="font:12px/1.35em arial, helvetica, sans-serif;"><div style="margin:0 0 25px 0; border-bottom:1px solid #ccc;"><h3 style="margin:0; font-size:1.7em; font-weight:normal; text-transform:none; text-align:left; color:#2f2f2f;">Whoops, it looks like you have an invalid PHP version.</h3></div><p>Magento supports PHP 5.2.0 or newer. <a href="http://www.magentocommerce.com/install" target="">Find out</a> how to install</a> Magento using PHP-CGI as a work-around.</p></div>'; exit; } error_reporting(E_ALL | E_STRICT); ini_set('display_errors', 1); $mageFilename = 'app/Mage.php'; if (!file_exists($mageFilename)) { echo $mageFilename." was not found"; exit; } require_once $mageFilename; Mage::app(); $executionPath = null; /* * determine Magento Edition */ if (file_exists('LICENSE_EE.txt')) { $edition = 'EE'; }elseif (file_exists('LICENSE_PRO.html')) { $edition = 'PE'; } else { $edition = 'CE'; } if(($edition=='EE' && version_compare(Mage::getVersion(), '1.11.0.0.', '<')===true) || ($edition=='PE' && version_compare(Mage::getVersion(), '1.11.0.0.', '<')===true) || ($edition=='CE' && version_compare(Mage::getVersion(), '1.6.0.0.', '<')===true) ){ $executionPath = 'old'; } else { $executionPath = 'new'; } $xpathEntity = 'global/models/sales_entity/entities//table'; if ($executionPath == 'old') { $xpathResource = 'global/models/sales_mysql4/entities//table'; } else { $xpathResource = 'global/models/sales_resource/entities//table'; } $salesEntitiesConf = array_merge( Mage::getSingleton('core/config')->init()->getXpath($xpathEntity), Mage::getSingleton('core/config')->init()->getXpath($xpathResource) ); $resource = Mage::getSingleton('core/resource'); $connection = $resource->getConnection('core_write'); /* * If you want delete System/Order Statuses (Status and State) you * should comments below lines (46-51) */ $skipTables = array ( $resource->getTableName('sales_order_status'), $resource->getTableName('sales_order_status_state'), $resource->getTableName('sales_order_status_label') ); $salesEntitiesConf = array_diff($salesEntitiesConf, $skipTables); /* Multiple RDBMS Support in Magento CE 1.6+ / EE 1.11+ http://www.magentocommerce.com/images/uploads/RDBMS_Guide2.pdf 2.2. Adapters: ... The new Varien_DB_Adapter_Interface was added to sign a contract that all developed adapters must execute in order to get Magento working on an actual database. The interface describes the list of methods and constants that can be used by resource models... Used below in the loop: * If $executionPath == 'old' * Varien_Db_Adapter_Pdo_Mysql::showTableStatus() * Varien_Db_Adapter_Pdo_Mysql::truncate() * Else * Varien_Db_Adapter_Interface::isTableExists() * Varien_Db_Adapter_Interface::truncateTable() */ while ($table = current($salesEntitiesConf) ){ $table = $resource->getTableName($table); if ($executionPath == 'old') { $isTableExists = $connection->showTableStatus($table); } else { $isTableExists = $connection->isTableExists($table); } if ($isTableExists) { try { if ($executionPath == 'old') { $connection->truncate($table); } else { $connection->truncateTable($table); } printf('Successfully truncated the <i style="color:green;">%s</i> table.<br />', $table); } catch(Exception $e) { printf('Error <i style="color:red;">%s</i> occurred truncating the <i style="color:red;">%s</i> table.<br />', $e->getMessage(), $table); } } next($salesEntitiesConf); } exit('All done...');
脚本支持的magento版本: 1.6.1.0 CE, 1.6.0.0 CE, 1.5.1.0. CE, 1.11.0.2 EE, 1.10.0.2 EE, 1.9.0.0 EE, 1.11.0.0 PE, 1.10.0.2 PE and 1.9.0.0 PE.