SQL-запросы для очистки данных в OpenCart полезные советы
При создании нового магазина или перезапуске в OpenCart, иногда необходимо очистить данные, такие как категории, товары, атрибуты и другие записи в базе данных. Удаление товаров и категорий в OpenCart
Вот несколько SQL-запросов, которые помогут вам очистить данные:
Очистить все категории в OpenCart 3:
TRUNCATE TABLE oc_category; TRUNCATE TABLE oc_category_description; TRUNCATE TABLE oc_category_filter; TRUNCATE TABLE oc_category_path; TRUNCATE TABLE oc_category_to_layout; TRUNCATE TABLE oc_category_to_store; DELETE FROM oc_seo_url WHERE query LIKE 'category_id=%';
Удалить только Seo URL от категорий:
DELETE FROM oc_seo_url WHERE query LIKE 'category_id=%';
Очистить все товары в OpenCart 3:
SET foreign_key_checks = 0; TRUNCATE TABLE oc_product; TRUNCATE TABLE oc_product_attribute; TRUNCATE TABLE oc_product_description; TRUNCATE TABLE oc_product_discount; TRUNCATE TABLE oc_product_image; TRUNCATE TABLE oc_product_option; TRUNCATE TABLE oc_product_option_value; TRUNCATE TABLE oc_product_related; TRUNCATE TABLE oc_product_related; TRUNCATE TABLE oc_product_reward; TRUNCATE TABLE oc_product_special; TRUNCATE TABLE oc_product_to_category; TRUNCATE TABLE oc_product_to_download; TRUNCATE TABLE oc_product_to_layout; TRUNCATE TABLE oc_product_to_store; TRUNCATE TABLE oc_review; DELETE FROM oc_seo_url WHERE query LIKE 'product_id=%';
Удалить только Seo URL от товаров:
DELETE FROM oc_seo_url WHERE query LIKE 'product_id=%';
Очистить все атрибуты в OpenCart:
TRUNCATE TABLE oc_attribute; TRUNCATE TABLE oc_attribute_description; TRUNCATE TABLE oc_attribute_group; TRUNCATE TABLE oc_attribute_group_description; TRUNCATE TABLE oc_product_attribute;
Очистить все опции в OpenCart:
TRUNCATE TABLE oc_option; TRUNCATE TABLE oc_option_description; TRUNCATE TABLE oc_option_value; TRUNCATE TABLE oc_option_value_description; TRUNCATE TABLE oc_product_option;
Удаление всех производителей:
TRUNCATE TABLE oc_manufacturer; TRUNCATE TABLE oc_manufacturer_to_store Последнее только для ocstore TRUNCATE TABLE oc_manufacturer_description
После создания новых может появится ошибка типу или что подобное:
Fatal error: Uncaught Exception: Error: Duplicate entry '2-0' for key 'oc_manufacturer_to_layout.PRIMARY'<br />Error No: 1062<br />INSERT INTO oc_manufacturer_to_layout SET manufacturer_id = '2', store_id = '0', layout_id = '0' in /var/www/system/library/db/mysqli.php:41 Stack trace: #0 /var/www/system/library/db.php(45): DB\MySQLi->query('INSERT INTO oc_...') #1 /var/www/storagest/modification/admin/model/catalog/manufacturer.php(13): DB->query('INSERT INTO oc_...') #2 www/storagest/modification/system/engine/loader.php(248): ModelCatalogManufacturer->addManufacturer(Array) #3 www//system/engine/proxy.php(47): Loader->{closure}(Array, Array) #4 www/admin/controller/catalog/manufacturer.php(26): Proxy->__call('addManufacturer', Array) #5 www/storagest/modification/system/engine/action.php(79): ControllerCatalogManufacturer->add() #6 /var/www/system/library/db/mysqli.php on line 41
Можно попробовать
DELETE FROM oc_manufacturer_to_layout WHERE manufacturer_id = '1' AND store_id = '0' AND layout_id = '0';
Или просто очистить oc_manufacturer_to_layout
Удаление всех заказов:
TRUNCATE TABLE oc_order; TRUNCATE TABLE oc_order_history; TRUNCATE TABLE oc_order_option; TRUNCATE TABLE oc_order_product; TRUNCATE TABLE oc_order_recurring; TRUNCATE TABLE oc_order_recurring_transaction; TRUNCATE TABLE oc_order_total; TRUNCATE TABLE oc_order_voucher;
Удаление всех покупателей:
TRUNCATE oc_customer; TRUNCATE oc_customer_activity; TRUNCATE oc_customer_history; TRUNCATE oc_customer_login; TRUNCATE oc_customer_ip; TRUNCATE oc_customer_online; TRUNCATE oc_customer_reward; TRUNCATE oc_customer_transaction; TRUNCATE oc_customer_search; TRUNCATE oc_customer_wishlist; TRUNCATE oc_custom_field; TRUNCATE oc_custom_field_customer_group; TRUNCATE oc_custom_field_description; TRUNCATE oc_custom_field_value; TRUNCATE oc_custom_field_value_description;
Учтите, что некоторые таблицы могут отсутствовать, иметь другой префикс или уже быть пустыми, поэтому удалите строки, вызывающие ошибку, и выполните запрос повторно до успешного выполнения.
Comments ( 2 )
Очень полезно, спс большое!
а как обнулить количество товара в карточках массово *?
UPDATE oc_product
SET quantity = 0;
или
UPDATE oc_product
SET quantity = 0
WHERE product_id IN (
SELECT product_id FROM oc_product_to_category WHERE category_id = 10
);