Skip to main content

[magento] delete an order by sql

 #Magento CE 1.4.1.1
##################################################
# CHANGE THIS VALUE TO YOUR ORDER INCREMENT ID
###################################################
SET @incId = '100002585';

##################################################
# IMPORTANT INFO
##################################################
# Assumes unique order ids across all stores
# Does not revert product stock
# Search and replace  first

# UNRESOLVED QUESTIONS...
# Is order_id in `*_grid` tables the entity_id from `*_order` or `*_order_grid` ??
# *_grid tables have invoice_id and order_id.  Why both?
# Is quote-order always 1 to 1?

##################################################
# GATHER REQUIRED IDs
##################################################

SET @orderId     = (SELECT entity_id     FROM sales_flat_order         WHERE increment_id=@incId);
SET @quoteId    = (SELECT quote_id         FROM sales_flat_order         WHERE entity_id=@orderId);
SET @customerId    = (SELECT customer_id     FROM sales_flat_order         WHERE entity_id=@orderId);


##################################################
# DELETE THE ORDER AND ALL RELATED DATA
##################################################
SET FOREIGN_KEY_CHECKS=0;


# Be sure to delete the items requiring subqueries before
# the main entity itself.  Otherwise you'll lose the ids
DELETE FROM `sales_flat_creditmemo_comment`     WHERE parent_id IN (SELECT entity_id FROM sales_flat_creditmemo WHERE order_id=@orderId);
DELETE FROM `sales_flat_creditmemo_item`        WHERE parent_id IN (SELECT entity_id FROM sales_flat_creditmemo WHERE order_id=@orderId);
DELETE FROM `sales_flat_creditmemo`             WHERE order_id=@orderId;
DELETE FROM `sales_flat_creditmemo_grid`        WHERE order_id=@orderId;        # Is this the correct orderId??

DELETE FROM `sales_flat_invoice_comment` WHERE parent_id IN (SELECT entity_id FROM sales_flat_invoice WHERE order_id=@orderId);
DELETE FROM `sales_flat_invoice_item`     WHERE parent_id IN (SELECT entity_id FROM sales_flat_invoice WHERE order_id=@orderId);
DELETE FROM `sales_flat_invoice`         WHERE order_id=@orderId;
DELETE FROM `sales_flat_invoice_grid`     WHERE order_id=@orderId;

DELETE FROM `sales_flat_quote_address_item`     WHERE parent_item_id  IN (SELECT address_id FROM sales_flat_quote_address WHERE quote_id=@quoteId);    # deprecated table??
DELETE FROM `sales_flat_quote_shipping_rate`    WHERE address_id IN (SELECT address_id FROM sales_flat_quote_address WHERE quote_id=@quoteId);
DELETE FROM `sales_flat_quote_item_option`     WHERE item_id IN (SELECT item_id FROM sales_flat_quote_item WHERE quote_id=@quoteId);
DELETE FROM `sales_flat_quote`                 WHERE entity_id=@quoteId;
DELETE FROM `sales_flat_quote_address`         WHERE quote_id=@quoteId;
DELETE FROM `sales_flat_quote_item`             WHERE quote_id=@quoteId;
DELETE FROM `sales_flat_quote_payment`         WHERE quote_id=@quoteId;

DELETE FROM `sales_flat_shipment_comment`    WHERE parent_id IN (SELECT entity_id FROM sales_flat_shipment WHERE order_id=@orderId);
DELETE FROM `sales_flat_shipment_item`         WHERE parent_id IN (SELECT entity_id FROM sales_flat_shipment WHERE order_id=@orderId);
DELETE FROM `sales_flat_shipment_track`         WHERE order_id  IN (SELECT entity_id FROM sales_flat_shipment WHERE order_id=@orderId);
DELETE FROM `sales_flat_shipment`             WHERE order_id=@orderId;
DELETE FROM `sales_flat_shipment_grid`         WHERE order_id=@orderId;

DELETE FROM `sales_flat_order`                     WHERE entity_id=@orderId;
DELETE FROM `sales_flat_order_address`             WHERE parent_id=@orderId;
DELETE FROM `sales_flat_order_item`                 WHERE order_id=@orderId;
DELETE FROM `sales_flat_order_payment`             WHERE parent_id=@orderId;
DELETE FROM `sales_flat_order_status_history`     WHERE parent_id=@orderId;
DELETE FROM `sales_flat_order_grid`                 WHERE increment_id=@incId;

# Logs
DELETE FROM `log_quote` WHERE quote_id=@quoteId;


##################################################
# REMOVE CUSTOMER AND RELATED DATA (OPTIONAL)
# This does NOT remove ALL other orders for the
# given customer. Only run this code if you've
# placed a single order with a newly registered
# the customer.
##################################################

# Customer and address data
DELETE FROM `customer_address_entity_datetime`     WHERE entity_id IN (SELECT entity_id FROM customer_address_entity WHERE parent_id=@customerId);
DELETE FROM `customer_address_entity_decimal`     WHERE entity_id IN (SELECT entity_id FROM customer_address_entity WHERE parent_id=@customerId);
DELETE FROM `customer_address_entity_int`         WHERE entity_id IN (SELECT entity_id FROM customer_address_entity WHERE parent_id=@customerId);
DELETE FROM `customer_address_entity_text`         WHERE entity_id IN (SELECT entity_id FROM customer_address_entity WHERE parent_id=@customerId);
DELETE FROM `customer_address_entity_varchar`     WHERE entity_id IN (SELECT entity_id FROM customer_address_entity WHERE parent_id=@customerId);
DELETE FROM `customer_address_entity` WHERE parent_id=@customerId;

DELETE FROM `customer_entity`             WHERE entity_id=@customerId;
DELETE FROM `customer_entity_datetime`     WHERE entity_id=@customerId;
DELETE FROM `customer_entity_decimal`     WHERE entity_id=@customerId;
DELETE FROM `customer_entity_int`         WHERE entity_id=@customerId;
DELETE FROM `customer_entity_text`         WHERE entity_id=@customerId;
DELETE FROM `customer_entity_varchar`     WHERE entity_id=@customerId;


# Tags
DELETE FROM `tag_relation` WHERE customer_id=@customerId;
#DELETE FROM `tag`;                # I think first_customer_id should be changed to next customer
                                    # who used it or removed if not with the other two tables updated
                                    # in the later case.  Anyone up for pioneering this?  How does Magento handle it?
#DELETE FROM `tag_summary`;      
#DELETE FROM `tag_properties`;

# Wishlist
DELETE FROM `wishlist_item`     WHERE wishlist_id IN (SELECT wishlist_id FROM wishlist WHERE customer_id=@customerId);
DELETE FROM `wishlist`         WHERE customer_id=@customerId;

# Logs
DELETE FROM `log_customer` WHERE customer_id=@customerId;


SET FOREIGN_KEY_CHECKS=1;

Comments

Popular posts from this blog

Browser User Agent List

Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36 Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36 Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0 Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36 Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/601.4.4 (KHTML, like Gecko) Version/9.0.3 Safari/601.4.4 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/601.5.17 (KHTML, like Gecko) Version/9.1 Safari/601.5.17 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36 Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0 Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0;...

[linux] Adjusting child processes for PHP-FPM (Nginx)

Adjusting child processes for PHP-FPM (Nginx) Problem: The following warning message appears in the logs: [26-Jul-2012 09:49:59] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 32 children, there are 8 idle, and 58 total children [26-Jul-2012 09:50:00] WARNING: [pool www] server reached pm.max_children setting (50), consider raising it It means that there are not enough PHP-FPM processes. Solution: We need to calculate and change these values based on the amount of memory on the system: /etc/php-fpm.d/www.conf pm.max_children = 50 pm.start_servers = 5 pm.min_spare_servers = 5 pm.max_spare_servers = 35 - the following command will help us to determine the memory used by each (PHP-FPM) child process: ps -ylC php-fpm --sort:rss The RSS column shows non-swapped physical memory usage by PHP-FPM processes in kilo Bytes. On an average each PHP-FPM process took ~75MB of RAM on my machine. Appropriate valu...

[symfony] Assert in Entity

* @Assert\NotBlank() * @Assert\Blank() * @Assert\NotNull() * @Assert\Null() * @Assert\True(message = "The token is invalid") * @Assert\False( *     message = "You've entered an invalid state." * ) * @Assert\Type(type="integer", message="The value {{ value }} is not a valid {{ type }}.") is_ array bool callable float double int integer long null numeric object real resource scalar string ctype_ alnum alpha cntrl digit graph lower print punct space upper xdigit * @Assert\Email( *     message = "The email '{{ value }}' is not a valid email.", *     checkMX = true * ) * @Assert\Length( *      min = 2, *      max = 50, *      minMessage = "Your first name must be at least {{ limit }} characters long", *      maxMessage = "Your first name cannot be longer than {{ limit }} characters long" * ...