├── .gitignore ├── LICENSE ├── README.md ├── downgrade.sample └── scripts ├── attributes.sql ├── cataloginventory.sql ├── catalogrule.sql ├── category.sql ├── cms.sql ├── customer.sql ├── ee.sql ├── product.sql ├── quote.sql ├── sales.sql ├── salesrule.sql └── wishlist.sql /.gitignore: -------------------------------------------------------------------------------- 1 | .idea -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) Thomas Klein 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Migration Tool for Adobe Commerce to Magento Open Source 2 | 3 | > Also known as Adobe Commerce to Magento Open Source 4 | > Also known as Adobe Commerce Cloud to Magento Open Source. 5 | > Also known as Magento Commerce to Magento Open Source. 6 | > Also known as Magento Enterprise (EE) to Magento Community (CE). 7 | 8 | This migrating tool allows to sidegrade the database schema without altering the data. The major difference between the 9 | two editions are the `staging` definitions that enable draft and scheduled publication. Beside that the scripts provided 10 | by the tool will remove some specific tables and attributes of the Adobe Commerce Edition. It will also keep the latest version available for product and categories in staging mode. 11 | 12 | **NOTICE** 13 | - This tool has been initially developed for Magento Commerce 2.2.* version. 14 | - This tool is working with latest Adobe Commerce 2.4.* (tested with 2.4.7-p3, thanks to this amazing contributor : [@LucaGallinari](https://github.com/LucaGallinari) [![GitHub followers](https://img.shields.io/github/followers/LucaGallinari.svg?style=social)](https://github.com/LucaGallinari) ❤️) 15 | 16 | ## How to use 17 | 18 | `mysql -u < ` 19 | 20 | > Where : 21 | > - `user` is your mysql user. 22 | > - `password` is your mysql user credentials 23 | > - `database` is your magento database 24 | > - `script.sql` is the script you want to run from the following list: 25 | 26 | You can use the following [sample](./downgrade.sample). 27 | 28 | **READY TO USE:** 29 | 30 | - [Attributes](./scripts/attributes.sql) 31 | - [SalesRule](./scripts/salesrule.sql) 32 | - [CatalogRule](./scripts/catalogrule.sql) 33 | - [Category](./scripts/category.sql) 34 | - [Product](./scripts/product.sql) 35 | - [CMS](./scripts/cms.sql) 36 | - [EE Tables](./scripts/ee.sql) 37 | - [Wishlist](./scripts/wishlist.sql) 38 | - [CatalogInventory](./scripts/cataloginventory.sql) 39 | - [Customer](./scripts/customer.sql) 40 | - [Quote](./scripts/quote.sql) 41 | - [Sales](./scripts/sales.sql) 42 | 43 | ## Similar package 44 | 45 | - [https://github.com/hoangnm89/m2-query-ee-to-ce](https://github.com/hoangnm89/m2-query-ee-to-ce) 46 | 47 | ## Authors 48 | 49 | - **Thomas Klein** - *Maintainer* - [![GitHub followers](https://img.shields.io/github/followers/thomas-kl1.svg?style=social)](https://github.com/thomas-kl1) 50 | - **Contributors** - *Contributor* - [![GitHub contributors](https://img.shields.io/github/contributors/opengento/magento2-downgrade-ee-ce.svg?style=flat-square)](https://github.com/opengento/magento2-downgrade-ee-ce/graphs/contributors) 51 | 52 | ## License 53 | 54 | This project is licensed under the MIT License - see the [LICENSE](./LICENSE) details. 55 | 56 | ***That's all folks!*** 57 | -------------------------------------------------------------------------------- /downgrade.sample: -------------------------------------------------------------------------------- 1 | mysql -u -p < ./scripts/attributes.sql 2 | mysql -u -p < ./scripts/ee.sql 3 | mysql -u -p < ./scripts/cms.sql 4 | mysql -u -p < ./scripts/catalogrule.sql 5 | mysql -u -p < ./scripts/salesrule.sql 6 | mysql -u -p < ./scripts/category.sql 7 | mysql -u -p < ./scripts/product.sql 8 | mysql -u -p < ./scripts/cataloginventory.sql 9 | mysql -u -p < ./scripts/customer.sql 10 | mysql -u -p < ./scripts/quote.sql 11 | mysql -u -p < ./scripts/sales.sql 12 | mysql -u -p < ./scripts/wishlist.sql 13 | -------------------------------------------------------------------------------- /scripts/attributes.sql: -------------------------------------------------------------------------------- 1 | -- Remove EE attributes 2 | 3 | DELETE 4 | FROM `eav_entity_type` 5 | WHERE `entity_type_code` IN ('rma_item','cms_page','cms_block'); 6 | 7 | DELETE 8 | FROM `eav_attribute` 9 | WHERE `attribute_code` IN ( 10 | 'reward_update_notification', 11 | 'reward_warning_notification', 12 | 'automatic_sorting', 13 | 'allow_message', 14 | 'allow_open_amount', 15 | 'email_template', 16 | 'giftcard_amounts', 17 | 'giftcard_type', 18 | 'gift_wrapping_available', 19 | 'gift_wrapping_price', 20 | 'is_redeemable', 21 | 'is_returnable', 22 | 'lifetime', 23 | 'open_amount_max', 24 | 'open_amount_min', 25 | 'related_tgtr_position_behavior', 26 | 'related_tgtr_position_limit', 27 | 'upsell_tgtr_position_behavior', 28 | 'upsell_tgtr_position_limit', 29 | 'use_config_allow_message', 30 | 'use_config_email_template', 31 | 'use_config_is_redeemable', 32 | 'use_config_lifetime', 33 | 'reward_points_balance_refunded', 34 | 'reward_salesrule_points', 35 | 'condition', 36 | 'is_qty_decimal', 37 | 'order_item_id', 38 | 'product_admin_name', 39 | 'product_admin_sku', 40 | 'product_name', 41 | 'product_options', 42 | 'product_sku', 43 | 'qty_approved', 44 | 'qty_authorized', 45 | 'qty_requested', 46 | 'qty_returned', 47 | 'reason', 48 | 'reason_other', 49 | 'resolution', 50 | 'rma_entity_id' 51 | ); 52 | -------------------------------------------------------------------------------- /scripts/cataloginventory.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE `cataloginventory_stock_item` 2 | DROP COLUMN `deferred_stock_update`, 3 | DROP COLUMN `use_config_deferred_stock_update`; 4 | -------------------------------------------------------------------------------- /scripts/catalogrule.sql: -------------------------------------------------------------------------------- 1 | -- Enable `rule_id` column for catalogrule 2 | 3 | ALTER TABLE `catalogrule_customer_group` 4 | ADD COLUMN `rule_id` INT(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Rule ID'; 5 | ALTER TABLE `catalogrule_website` 6 | ADD COLUMN `rule_id` INT(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Rule ID'; 7 | 8 | -- Clean duplicates for catalogrule 9 | 10 | DELETE e 11 | FROM `catalogrule` e 12 | LEFT OUTER JOIN ( 13 | SELECT MAX(`updated_in`) as `last_updated_in`, `rule_id` 14 | FROM `catalogrule` 15 | GROUP BY `rule_id` 16 | ) AS p 17 | ON e.`rule_id` = p.`rule_id` AND e.`updated_in` = p.`last_updated_in` 18 | WHERE p.`last_updated_in` IS NULL; 19 | 20 | -- Populate `rule_id` column for catalogrule 21 | 22 | UPDATE `catalogrule_customer_group` v INNER JOIN `catalogrule` e ON v.`row_id` = e.`row_id` 23 | SET v.`rule_id` = e.`rule_id` 24 | WHERE 1; 25 | UPDATE `catalogrule_website` v INNER JOIN `catalogrule` e ON v.`row_id` = e.`row_id` 26 | SET v.`rule_id` = e.`rule_id` 27 | WHERE 1; 28 | 29 | -- ----------------------------------------------------- 30 | -- Update the `rule_id` relation link for catalogrule -- 31 | -- ----------------------------------------------------- 32 | 33 | -- Customer group 34 | ALTER TABLE `catalogrule_customer_group` 35 | DROP FOREIGN KEY `CATALOGRULE_CUSTOMER_GROUP_ROW_ID_CATALOGRULE_ROW_ID`, 36 | DROP PRIMARY KEY, 37 | ADD PRIMARY KEY (`rule_id`,`customer_group_id`), 38 | DROP COLUMN `row_id`; 39 | 40 | -- Website 41 | ALTER TABLE `catalogrule_website` 42 | DROP FOREIGN KEY `CATALOGRULE_WEBSITE_ROW_ID_CATALOGRULE_ROW_ID`, 43 | DROP PRIMARY KEY, 44 | ADD PRIMARY KEY (`rule_id`,`website_id`), 45 | DROP COLUMN `row_id`; 46 | 47 | -- Catalogrule 48 | ALTER TABLE `catalogrule` 49 | DROP FOREIGN KEY `CATALOGRULE_RULE_ID_SEQUENCE_CATALOGRULE_SEQUENCE_VALUE`, 50 | DROP COLUMN `row_id`, 51 | DROP COLUMN `created_in`, 52 | DROP COLUMN `updated_in`, 53 | ADD PRIMARY KEY (`rule_id`), 54 | MODIFY COLUMN `rule_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'Entity ID'; 55 | 56 | -- Foreign keys 57 | ALTER TABLE `catalogrule_customer_group` 58 | ADD CONSTRAINT `CATALOGRULE_CUSTOMER_GROUP_RULE_ID_CATALOGRULE_RULE_ID` FOREIGN KEY (`rule_id`) REFERENCES `catalogrule` (`rule_id`) ON DELETE CASCADE ON UPDATE RESTRICT; 59 | ALTER TABLE `catalogrule_website` 60 | ADD CONSTRAINT `CATALOGRULE_WEBSITE_RULE_ID_CATALOGRULE_RULE_ID` FOREIGN KEY (`rule_id`) REFERENCES `catalogrule` (`rule_id`) ON DELETE CASCADE ON UPDATE RESTRICT; 61 | 62 | -- ---------------- 63 | -- Drop sequence -- 64 | -- ---------------- 65 | 66 | DROP TABLE `sequence_catalogrule`; 67 | -------------------------------------------------------------------------------- /scripts/category.sql: -------------------------------------------------------------------------------- 1 | -- Enable `entity_id` column for catalog category entity 2 | DELETE FROM catalog_category_entity WHERE row_id NOT IN ( 3 | SELECT tmp_category.row_id FROM (SELECT MAX(row_id) AS row_id FROM catalog_category_entity GROUP BY entity_id) tmp_category 4 | ); 5 | 6 | ALTER TABLE `catalog_category_entity_datetime` 7 | ADD COLUMN `entity_id` INT(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Entity ID'; 8 | ALTER TABLE `catalog_category_entity_decimal` 9 | ADD COLUMN `entity_id` INT(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Entity ID'; 10 | ALTER TABLE `catalog_category_entity_int` 11 | ADD COLUMN `entity_id` INT(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Entity ID'; 12 | ALTER TABLE `catalog_category_entity_text` 13 | ADD COLUMN `entity_id` INT(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Entity ID'; 14 | ALTER TABLE `catalog_category_entity_varchar` 15 | ADD COLUMN `entity_id` INT(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Entity ID'; 16 | 17 | -- Clean duplicates for catalog category entity 18 | 19 | DELETE e 20 | FROM `catalog_category_entity` e 21 | LEFT OUTER JOIN ( 22 | SELECT MAX(`updated_in`) as `last_updated_in`, `entity_id` 23 | FROM `catalog_category_entity` 24 | GROUP BY `entity_id` 25 | ) AS p 26 | ON e.`entity_id` = p.`entity_id` AND e.`updated_in` = p.`last_updated_in` 27 | WHERE p.`last_updated_in` IS NULL; 28 | 29 | -- Populate `entity_id` column for catalog category entity 30 | 31 | UPDATE `catalog_category_entity_datetime` v INNER JOIN `catalog_category_entity` e ON v.`row_id` = e.`row_id` 32 | SET v.`entity_id` = e.`entity_id` 33 | WHERE 1; 34 | UPDATE `catalog_category_entity_decimal` v INNER JOIN `catalog_category_entity` e ON v.`row_id` = e.`row_id` 35 | SET v.`entity_id` = e.`entity_id` 36 | WHERE 1; 37 | UPDATE `catalog_category_entity_int` v INNER JOIN `catalog_category_entity` e ON v.`row_id` = e.`row_id` 38 | SET v.`entity_id` = e.`entity_id` 39 | WHERE 1; 40 | UPDATE `catalog_category_entity_text` v INNER JOIN `catalog_category_entity` e ON v.`row_id` = e.`row_id` 41 | SET v.`entity_id` = e.`entity_id` 42 | WHERE 1; 43 | UPDATE `catalog_category_entity_varchar` v INNER JOIN `catalog_category_entity` e ON v.`row_id` = e.`row_id` 44 | SET v.`entity_id` = e.`entity_id` 45 | WHERE 1; 46 | 47 | -- ------------------------------------------------------------------- 48 | -- Delete entities which does not exists in catalog_category_entity -- 49 | -- ------------------------------------------------------------------- 50 | DELETE FROM `catalog_category_entity_datetime` WHERE row_id NOT IN (SELECT MAX(row_id) FROM catalog_category_entity GROUP BY entity_id) ORDER BY `entity_id` ASC; 51 | 52 | DELETE FROM `catalog_category_entity_decimal` WHERE row_id NOT IN (SELECT MAX(row_id) FROM catalog_category_entity GROUP BY entity_id) ORDER BY `entity_id` ASC; 53 | 54 | DELETE FROM `catalog_category_entity_int` WHERE row_id NOT IN (SELECT MAX(row_id) FROM catalog_category_entity GROUP BY entity_id) ORDER BY `entity_id` ASC; 55 | 56 | DELETE FROM `catalog_category_entity_text` WHERE row_id NOT IN (SELECT MAX(row_id) FROM catalog_category_entity GROUP BY entity_id) ORDER BY `entity_id` ASC; 57 | 58 | DELETE FROM `catalog_category_entity_varchar` WHERE row_id NOT IN (SELECT MAX(row_id) FROM catalog_category_entity GROUP BY entity_id) ORDER BY `entity_id` ASC; 59 | 60 | -- ------------------------------------------------------------------ 61 | -- Update the `entity_id` relation link for catalog category entity -- 62 | -- ------------------------------------------------------------------ 63 | 64 | -- Datetime 65 | ALTER TABLE `catalog_category_entity_datetime` 66 | DROP FOREIGN KEY `CAT_CTGR_ENTT_DTIME_ROW_ID_CAT_CTGR_ENTT_ROW_ID`, 67 | DROP INDEX `CATALOG_CATEGORY_ENTITY_DATETIME_ROW_ID_ATTRIBUTE_ID_STORE_ID`, 68 | ADD CONSTRAINT `CATALOG_CATEGORY_ENTITY_DATETIME_ENTITY_ID_ATTRIBUTE_ID_STORE_ID` UNIQUE KEY (`entity_id`,`attribute_id`,`store_id`), 69 | DROP COLUMN `row_id`; 70 | 71 | -- Decimal 72 | ALTER TABLE `catalog_category_entity_decimal` 73 | DROP FOREIGN KEY `CAT_CTGR_ENTT_DEC_ROW_ID_CAT_CTGR_ENTT_ROW_ID`, 74 | DROP INDEX `CATALOG_CATEGORY_ENTITY_DECIMAL_ROW_ID_ATTRIBUTE_ID_STORE_ID`, 75 | ADD CONSTRAINT `CATALOG_CATEGORY_ENTITY_DECIMAL_ENTITY_ID_ATTRIBUTE_ID_STORE_ID` UNIQUE KEY (`entity_id`,`attribute_id`,`store_id`), 76 | DROP COLUMN `row_id`; 77 | 78 | -- Int 79 | ALTER TABLE `catalog_category_entity_int` 80 | DROP FOREIGN KEY `CAT_CTGR_ENTT_INT_ROW_ID_CAT_CTGR_ENTT_ROW_ID`, 81 | DROP INDEX `CATALOG_CATEGORY_ENTITY_INT_ROW_ID_ATTRIBUTE_ID_STORE_ID`, 82 | ADD CONSTRAINT `CATALOG_CATEGORY_ENTITY_INT_ENTITY_ID_ATTRIBUTE_ID_STORE_ID` UNIQUE KEY (`entity_id`,`attribute_id`,`store_id`), 83 | DROP COLUMN `row_id`; 84 | 85 | -- Text 86 | ALTER TABLE `catalog_category_entity_text` 87 | DROP FOREIGN KEY `CAT_CTGR_ENTT_TEXT_ROW_ID_CAT_CTGR_ENTT_ROW_ID`, 88 | DROP INDEX `CATALOG_CATEGORY_ENTITY_TEXT_ROW_ID_ATTRIBUTE_ID_STORE_ID`, 89 | ADD CONSTRAINT `CATALOG_CATEGORY_ENTITY_TEXT_ENTITY_ID_ATTRIBUTE_ID_STORE_ID` UNIQUE KEY (`entity_id`,`attribute_id`,`store_id`), 90 | DROP COLUMN `row_id`; 91 | 92 | -- Varchar 93 | ALTER TABLE `catalog_category_entity_varchar` 94 | DROP FOREIGN KEY `CAT_CTGR_ENTT_VCHR_ROW_ID_CAT_CTGR_ENTT_ROW_ID`, 95 | DROP INDEX `CATALOG_CATEGORY_ENTITY_VARCHAR_ROW_ID_ATTRIBUTE_ID_STORE_ID`, 96 | ADD CONSTRAINT `CATALOG_CATEGORY_ENTITY_VARCHAR_ENTITY_ID_ATTRIBUTE_ID_STORE_ID` UNIQUE KEY (`entity_id`,`attribute_id`,`store_id`), 97 | DROP COLUMN `row_id`; 98 | 99 | -- Entity 100 | SET FOREIGN_KEY_CHECKS = 0; 101 | ALTER TABLE `catalog_category_entity` 102 | DROP FOREIGN KEY `CAT_CTGR_ENTT_ENTT_ID_SEQUENCE_CAT_CTGR_SEQUENCE_VAL`, 103 | DROP COLUMN `row_id`, 104 | DROP COLUMN `created_in`, 105 | DROP COLUMN `updated_in`, 106 | MODIFY COLUMN `entity_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'Entity ID', 107 | ADD PRIMARY KEY (`entity_id`); 108 | SET FOREIGN_KEY_CHECKS = 1; 109 | 110 | -- Foreign keys 111 | ALTER TABLE `catalog_category_entity_datetime` 112 | ADD CONSTRAINT `CAT_CTGR_ENTT_DTIME_ENTT_ID_CAT_CTGR_ENTT_ENTT_ID` FOREIGN KEY (`entity_id`) REFERENCES `catalog_category_entity` (`entity_id`) ON DELETE CASCADE ON UPDATE RESTRICT; 113 | ALTER TABLE `catalog_category_entity_decimal` 114 | ADD CONSTRAINT `CAT_CTGR_ENTT_DEC_ENTT_ID_CAT_CTGR_ENTT_ENTT_ID` FOREIGN KEY (`entity_id`) REFERENCES `catalog_category_entity` (`entity_id`) ON DELETE CASCADE ON UPDATE RESTRICT; 115 | ALTER TABLE `catalog_category_entity_int` 116 | ADD CONSTRAINT `CAT_CTGR_ENTT_INT_ENTT_ID_CAT_CTGR_ENTT_ENTT_ID` FOREIGN KEY (`entity_id`) REFERENCES `catalog_category_entity` (`entity_id`) ON DELETE CASCADE ON UPDATE RESTRICT; 117 | ALTER TABLE `catalog_category_entity_text` 118 | ADD CONSTRAINT `CAT_CTGR_ENTT_TEXT_ENTT_ID_CAT_CTGR_ENTT_ENTT_ID` FOREIGN KEY (`entity_id`) REFERENCES `catalog_category_entity` (`entity_id`) ON DELETE CASCADE ON UPDATE RESTRICT; 119 | ALTER TABLE `catalog_category_entity_varchar` 120 | ADD CONSTRAINT `CAT_CTGR_ENTT_VCHR_ENTT_ID_CAT_CTGR_ENTT_ENTT_ID` FOREIGN KEY (`entity_id`) REFERENCES `catalog_category_entity` (`entity_id`) ON DELETE CASCADE ON UPDATE RESTRICT; 121 | 122 | -- ---------------- 123 | -- Drop sequence -- 124 | -- ---------------- 125 | 126 | ALTER TABLE `catalog_category_product` 127 | DROP FOREIGN KEY `CAT_CTGR_PRD_CTGR_ID_SEQUENCE_CAT_CTGR_SEQUENCE_VAL`, 128 | ADD CONSTRAINT `CAT_CTGR_PRD_CTGR_ID_CAT_CTGR_ENTT_ENTT_ID` FOREIGN KEY (`category_id`) REFERENCES `catalog_category_entity` (`entity_id`) ON DELETE CASCADE ON UPDATE RESTRICT; 129 | 130 | ALTER TABLE `catalog_url_rewrite_product_category` 131 | DROP FOREIGN KEY `CAT_URL_REWRITE_PRD_CTGR_CTGR_ID_SEQUENCE_CAT_CTGR_SEQUENCE_VAL`, 132 | ADD CONSTRAINT `CAT_URL_REWRITE_PRD_CTGR_CTGR_ID_CAT_CTGR_ENTT_ENTT_ID` FOREIGN KEY (`category_id`) REFERENCES `catalog_category_entity` (`entity_id`) ON DELETE CASCADE ON UPDATE RESTRICT; 133 | 134 | DROP TABLE `sequence_catalog_category`; 135 | -------------------------------------------------------------------------------- /scripts/cms.sql: -------------------------------------------------------------------------------- 1 | -- Enable `block_id` for block store 2 | ALTER TABLE `cms_block_store` 3 | ADD COLUMN `block_id` SMALLINT(6) NOT NULL COMMENT 'Entity ID'; 4 | 5 | -- Enable `page_id` for page store 6 | ALTER TABLE `cms_page_store` 7 | ADD COLUMN `page_id` SMALLINT(6) NOT NULL COMMENT 'Entity ID'; 8 | 9 | -- Clean duplicates for cms block 10 | DELETE e 11 | FROM `cms_block` e 12 | LEFT OUTER JOIN ( 13 | SELECT MAX(`updated_in`) as `last_updated_in`, `block_id` 14 | FROM `cms_block` 15 | GROUP BY `block_id` 16 | ) AS p 17 | ON e.`block_id` = p.`block_id` AND e.`updated_in` = p.`last_updated_in` 18 | WHERE p.`last_updated_in` IS NULL; 19 | 20 | -- Clean duplicates for cms page 21 | DELETE e 22 | FROM `cms_page` e 23 | LEFT OUTER JOIN ( 24 | SELECT MAX(`updated_in`) as `last_updated_in`, `page_id` 25 | FROM `cms_page` 26 | GROUP BY `page_id` 27 | ) AS p 28 | ON e.`page_id` = p.`page_id` AND e.`updated_in` = p.`last_updated_in` 29 | WHERE p.`last_updated_in` IS NULL; 30 | 31 | -- Populate `block_id` column for block store 32 | UPDATE `cms_block_store` v INNER JOIN `cms_block` e ON v.`row_id` = e.`row_id` 33 | SET v.`block_id` = e.`block_id` 34 | WHERE 1; 35 | 36 | -- Populate `page_id` column for page store 37 | UPDATE `cms_page_store` v INNER JOIN `cms_page` e ON v.`row_id` = e.`row_id` 38 | SET v.`page_id` = e.`page_id` 39 | WHERE 1; 40 | 41 | -- Update the `block_id` relation link for block store 42 | ALTER TABLE `cms_block_store` 43 | DROP FOREIGN KEY `CMS_BLOCK_STORE_ROW_ID_CMS_BLOCK_ROW_ID`, 44 | DROP PRIMARY KEY, 45 | DROP COLUMN `row_id`, 46 | ADD PRIMARY KEY (`block_id`,`store_id`); 47 | 48 | SET FOREIGN_KEY_CHECKS = 0; # Many third party modules refers to the `block_id` column, we prevent blocking. 49 | ALTER TABLE `cms_block` 50 | DROP FOREIGN KEY `CMS_BLOCK_BLOCK_ID_SEQUENCE_CMS_BLOCK_SEQUENCE_VALUE`, 51 | DROP COLUMN `row_id`, 52 | DROP COLUMN `created_in`, 53 | DROP COLUMN `updated_in`, 54 | ADD PRIMARY KEY (`block_id`), 55 | MODIFY COLUMN `block_id` SMALLINT(6) NOT NULL AUTO_INCREMENT COMMENT 'Entity ID'; 56 | SET FOREIGN_KEY_CHECKS = 1; 57 | 58 | -- Update the `page_id` relation link for page store 59 | ALTER TABLE `cms_page_store` 60 | DROP FOREIGN KEY `CMS_PAGE_STORE_ROW_ID_CMS_PAGE_ROW_ID`, 61 | DROP PRIMARY KEY, 62 | DROP COLUMN `row_id`, 63 | ADD PRIMARY KEY (`page_id`,`store_id`); 64 | 65 | SET FOREIGN_KEY_CHECKS = 0; # Many third party modules refers to the `page_id` column, we prevent blocking. 66 | ALTER TABLE `cms_page` 67 | DROP FOREIGN KEY `CMS_PAGE_PAGE_ID_SEQUENCE_CMS_PAGE_SEQUENCE_VALUE`, 68 | DROP COLUMN `row_id`, 69 | DROP COLUMN `created_in`, 70 | DROP COLUMN `updated_in`, 71 | DROP COLUMN `website_root`, 72 | ADD PRIMARY KEY (`page_id`), 73 | MODIFY COLUMN `page_id` SMALLINT(6) NOT NULL AUTO_INCREMENT COMMENT 'Entity ID'; 74 | SET FOREIGN_KEY_CHECKS = 1; 75 | 76 | -- Foreign keys cms block 77 | ALTER TABLE `cms_block_store` 78 | ADD CONSTRAINT `CMS_BLOCK_STORE_BLOCK_ID_CMS_BLOCK_BLOCK_ID` FOREIGN KEY (`block_id`) REFERENCES `cms_block` (`block_id`) ON DELETE CASCADE ON UPDATE RESTRICT; 79 | 80 | -- Foreign keys cms page 81 | ALTER TABLE `cms_page_store` 82 | ADD CONSTRAINT `CMS_PAGE_STORE_PAGE_ID_CMS_PAGE_PAGE_ID` FOREIGN KEY (`page_id`) REFERENCES `cms_page` (`page_id`) ON DELETE CASCADE ON UPDATE RESTRICT; 83 | 84 | -- ---------------- 85 | -- Drop sequence -- 86 | -- ---------------- 87 | 88 | DROP TABLE `sequence_cms_page`,`sequence_cms_block`; 89 | -------------------------------------------------------------------------------- /scripts/customer.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE `customer_eav_attribute` 2 | DROP COLUMN `is_used_for_customer_segment`; 3 | 4 | ALTER TABLE `customer_entity` 5 | DROP INDEX `CUSTOMER_ENTITY_CREATED_AT`, 6 | DROP INDEX `CUSTOMER_ENTITY_DOB`, 7 | DROP INDEX `CUSTOMER_ENTITY_DEFAULT_BILLING`, 8 | DROP INDEX `CUSTOMER_ENTITY_DEFAULT_SHIPPING`, 9 | DROP INDEX `CUSTOMER_ENTITY_GENDER`, 10 | DROP INDEX `CUSTOMER_ENTITY_GROUP_ID`; 11 | -------------------------------------------------------------------------------- /scripts/ee.sql: -------------------------------------------------------------------------------- 1 | -- Drop EE tables 2 | 3 | -- ------------------------------------------------------ -- 4 | -- Here we drop the tables without the foreign key check, -- 5 | -- because unless your custom development refers to them, -- 6 | -- it won't have any interest to keep them in CE -- 7 | -- ------------------------------------------------------ -- 8 | 9 | SET FOREIGN_KEY_CHECKS = 0; 10 | DROP TABLE IF EXISTS 11 | `catalogpermissions_category_cl`, 12 | `catalogpermissions_product_cl`, 13 | `magento_banner`, 14 | `magento_banner_catalogrule`, 15 | `magento_banner_content`, 16 | `magento_banner_customersegment`, 17 | `magento_banner_salesrule`, 18 | `magento_catalogevent_event`, 19 | `magento_catalogevent_event_image`, 20 | `magento_catalogpermissions`, 21 | `magento_catalogpermissions_index`, 22 | `magento_catalogpermissions_index_product`, 23 | `magento_catalogpermissions_index_product_replica`, 24 | `magento_catalogpermissions_index_product_tmp`, 25 | `magento_catalogpermissions_index_replica`, 26 | `magento_catalogpermissions_index_tmp`, 27 | `magento_customerbalance`, 28 | `magento_customerbalance_history`, 29 | `magento_customercustomattributes_sales_flat_order`, 30 | `magento_customercustomattributes_sales_flat_order_address`, 31 | `magento_customercustomattributes_sales_flat_quote`, 32 | `magento_customercustomattributes_sales_flat_quote_address`, 33 | `magento_customersegment_customer`, 34 | `magento_customersegment_event`, 35 | `magento_customersegment_segment`, 36 | `magento_customersegment_website`, 37 | `magento_giftcard_amount`, 38 | `magento_giftcardaccount`, 39 | `magento_giftcardaccount_history`, 40 | `magento_giftcardaccount_pool`, 41 | `magento_giftregistry_data`, 42 | `magento_giftregistry_entity`, 43 | `magento_giftregistry_item`, 44 | `magento_giftregistry_item_option`, 45 | `magento_giftregistry_label`, 46 | `magento_giftregistry_person`, 47 | `magento_giftregistry_type`, 48 | `magento_giftregistry_type_info`, 49 | `magento_giftwrapping`, 50 | `magento_giftwrapping_store_attributes`, 51 | `magento_giftwrapping_website`, 52 | `magento_invitation`, 53 | `magento_invitation_status_history`, 54 | `magento_invitation_track`, 55 | `magento_logging_event`, 56 | `magento_logging_event_changes`, 57 | `magento_reminder_rule`, 58 | `magento_reminder_rule_coupon`, 59 | `magento_reminder_rule_log`, 60 | `magento_reminder_rule_website`, 61 | `magento_reminder_template`, 62 | `magento_reward`, 63 | `magento_reward_history`, 64 | `magento_reward_rate`, 65 | `magento_reward_salesrule`, 66 | `magento_rma`, 67 | `magento_rma_grid`, 68 | `magento_rma_item_eav_attribute`, 69 | `magento_rma_item_eav_attribute_website`, 70 | `magento_rma_item_entity`, 71 | `magento_rma_item_entity_datetime`, 72 | `magento_rma_item_entity_decimal`, 73 | `magento_rma_item_entity_int`, 74 | `magento_rma_item_entity_text`, 75 | `magento_rma_item_entity_varchar`, 76 | `magento_rma_item_form_attribute`, 77 | `magento_rma_shipping_label`, 78 | `magento_rma_status_history`, 79 | `magento_sales_creditmemo_grid_archive`, 80 | `magento_sales_invoice_grid_archive`, 81 | `magento_sales_order_grid_archive`, 82 | `magento_sales_shipment_grid_archive`, 83 | `magento_salesrule_filter`, 84 | `magento_scheduled_operations`, 85 | `magento_targetrule`, 86 | `magento_targetrule_customersegment`, 87 | `magento_targetrule_index`, 88 | `magento_targetrule_index_crosssell`, 89 | `magento_targetrule_index_crosssell_product`, 90 | `magento_targetrule_index_related`, 91 | `magento_targetrule_index_related_product`, 92 | `magento_targetrule_index_upsell`, 93 | `magento_targetrule_index_upsell_product`, 94 | `magento_targetrule_product`, 95 | `magento_versionscms_hierarchy_lock`, 96 | `magento_versionscms_hierarchy_metadata`, 97 | `magento_versionscms_hierarchy_node`, 98 | `magento_versionscms_increment`, 99 | `staging_update`, 100 | `support_backup`, 101 | `support_backup_item`, 102 | `support_report`, 103 | `quote_preview`, 104 | `visual_merchandiser_rule`; 105 | SET FOREIGN_KEY_CHECKS = 1; 106 | -------------------------------------------------------------------------------- /scripts/product.sql: -------------------------------------------------------------------------------- 1 | -- Enable `entity_id` column for catalog product entity 2 | 3 | ALTER TABLE `catalog_product_entity_datetime` 4 | ADD COLUMN `entity_id` INT(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Entity ID'; 5 | ALTER TABLE `catalog_product_entity_decimal` 6 | ADD COLUMN `entity_id` INT(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Entity ID'; 7 | ALTER TABLE `catalog_product_entity_gallery` 8 | ADD COLUMN `entity_id` INT(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Entity ID'; 9 | ALTER TABLE `catalog_product_entity_int` 10 | ADD COLUMN `entity_id` INT(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Entity ID'; 11 | ALTER TABLE `catalog_product_entity_media_gallery_value` 12 | ADD COLUMN `entity_id` INT(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Entity ID'; 13 | ALTER TABLE `catalog_product_entity_media_gallery_value_to_entity` 14 | ADD COLUMN `entity_id` INT(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Entity ID'; 15 | ALTER TABLE `catalog_product_entity_text` 16 | ADD COLUMN `entity_id` INT(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Entity ID'; 17 | ALTER TABLE `catalog_product_entity_tier_price` 18 | ADD COLUMN `entity_id` INT(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Entity ID'; 19 | ALTER TABLE `catalog_product_entity_varchar` 20 | ADD COLUMN `entity_id` INT(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Entity ID'; 21 | 22 | -- Enable `parent_id` & `parent_product_id` columns for catalog product bundle 23 | 24 | ALTER TABLE `catalog_product_bundle_option` 25 | ADD COLUMN `new_parent_id` INT(10) UNSIGNED NOT NULL COMMENT 'Parent ID'; 26 | ALTER TABLE `catalog_product_bundle_option_value` 27 | ADD COLUMN `new_parent_product_id` INT(10) UNSIGNED NOT NULL COMMENT 'Parent Product ID'; 28 | ALTER TABLE `catalog_product_bundle_selection` 29 | ADD COLUMN `new_parent_product_id` INT(10) UNSIGNED NOT NULL COMMENT 'Parent Product ID'; 30 | ALTER TABLE `catalog_product_bundle_selection_price` 31 | ADD COLUMN `new_parent_product_id` INT(10) UNSIGNED NOT NULL COMMENT 'Parent Product ID'; 32 | 33 | -- Enable `product_id` column for downloadable 34 | 35 | ALTER TABLE `downloadable_link` 36 | ADD COLUMN `new_product_id` INT(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Product ID'; 37 | ALTER TABLE `downloadable_sample` 38 | ADD COLUMN `new_product_id` INT(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Product ID'; 39 | 40 | -- Enable `product_id` column for product link 41 | 42 | ALTER TABLE `catalog_product_link` 43 | ADD COLUMN `new_product_id` INT(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Product ID'; 44 | 45 | -- Enable `product_id` column for product option 46 | 47 | ALTER TABLE `catalog_product_option` 48 | ADD COLUMN `new_product_id` INT(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Product ID'; 49 | 50 | -- Enable `child_id` & `parent_id` columns for product relation 51 | 52 | ALTER TABLE `catalog_product_relation` 53 | ADD COLUMN `new_parent_id` INT(10) UNSIGNED NOT NULL COMMENT 'Parent ID'; 54 | 55 | -- Enable `product_id` column for super attribute 56 | 57 | ALTER TABLE `catalog_product_super_attribute` 58 | ADD COLUMN `new_product_id` INT(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Product ID'; 59 | 60 | -- Enable `parent_id` column for super link 61 | 62 | ALTER TABLE `catalog_product_super_link` 63 | ADD COLUMN `new_parent_id` INT(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Parent ID'; 64 | 65 | -- Clean duplicate for catalog product entity 66 | 67 | DELETE e 68 | FROM `catalog_product_entity` e 69 | LEFT OUTER JOIN ( 70 | SELECT MAX(`updated_in`) as `last_updated_in`, `entity_id` 71 | FROM `catalog_product_entity` 72 | GROUP BY `entity_id` 73 | ) AS p 74 | ON e.`entity_id` = p.`entity_id` AND e.`updated_in` = p.`last_updated_in` 75 | WHERE p.`last_updated_in` IS NULL; 76 | 77 | -- Populate `entity_id` column for catalog product entity 78 | 79 | UPDATE `catalog_product_entity_datetime` v INNER JOIN `catalog_product_entity` e ON v.`row_id` = e.`row_id` 80 | SET v.`entity_id` = e.`entity_id` 81 | WHERE 1; 82 | UPDATE `catalog_product_entity_decimal` v INNER JOIN `catalog_product_entity` e ON v.`row_id` = e.`row_id` 83 | SET v.`entity_id` = e.`entity_id` 84 | WHERE 1; 85 | UPDATE `catalog_product_entity_gallery` v INNER JOIN `catalog_product_entity` e ON v.`row_id` = e.`row_id` 86 | SET v.`entity_id` = e.`entity_id` 87 | WHERE 1; 88 | UPDATE `catalog_product_entity_int` v INNER JOIN `catalog_product_entity` e ON v.`row_id` = e.`row_id` 89 | SET v.`entity_id` = e.`entity_id` 90 | WHERE 1; 91 | UPDATE `catalog_product_entity_media_gallery_value` v INNER JOIN `catalog_product_entity` e ON v.`row_id` = e.`row_id` 92 | SET v.`entity_id` = e.`entity_id` 93 | WHERE 1; 94 | UPDATE `catalog_product_entity_media_gallery_value_to_entity` v INNER JOIN `catalog_product_entity` e ON v.`row_id` = e.`row_id` 95 | SET v.`entity_id` = e.`entity_id` 96 | WHERE 1; 97 | UPDATE `catalog_product_entity_text` v INNER JOIN `catalog_product_entity` e ON v.`row_id` = e.`row_id` 98 | SET v.`entity_id` = e.`entity_id` 99 | WHERE 1; 100 | UPDATE `catalog_product_entity_tier_price` v INNER JOIN `catalog_product_entity` e ON v.`row_id` = e.`row_id` 101 | SET v.`entity_id` = e.`entity_id` 102 | WHERE 1; 103 | UPDATE `catalog_product_entity_varchar` v INNER JOIN `catalog_product_entity` e ON v.`row_id` = e.`row_id` 104 | SET v.`entity_id` = e.`entity_id` 105 | WHERE 1; 106 | 107 | -- Populate `parent_id` & `parent_product_id` columns for catalog product bundle 108 | 109 | UPDATE `catalog_product_bundle_option` v INNER JOIN `catalog_product_entity` e ON v.`parent_id` = e.`row_id` 110 | SET v.`new_parent_id` = e.`entity_id` 111 | WHERE 1; 112 | UPDATE `catalog_product_bundle_option_value` v INNER JOIN `catalog_product_entity` e ON v.`parent_product_id` = e.`row_id` 113 | SET v.`new_parent_product_id` = e.`entity_id` 114 | WHERE 1; 115 | UPDATE `catalog_product_bundle_selection` v INNER JOIN `catalog_product_entity` e ON v.`parent_product_id` = e.`row_id` 116 | SET v.`new_parent_product_id` = e.`entity_id` 117 | WHERE 1; 118 | UPDATE `catalog_product_bundle_selection_price` v INNER JOIN `catalog_product_entity` e ON v.`parent_product_id` = e.`row_id` 119 | SET v.`new_parent_product_id` = e.`entity_id` 120 | WHERE 1; 121 | 122 | -- Populate `product_id` column for downloadable 123 | 124 | UPDATE `downloadable_link` v INNER JOIN `catalog_product_entity` e ON v.`product_id` = e.`row_id` 125 | SET v.`new_product_id` = e.`entity_id` 126 | WHERE 1; 127 | UPDATE `downloadable_sample` v INNER JOIN `catalog_product_entity` e ON v.`product_id` = e.`row_id` 128 | SET v.`new_product_id` = e.`entity_id` 129 | WHERE 1; 130 | 131 | -- Populate `product_id` column for product link 132 | 133 | UPDATE `catalog_product_link` v INNER JOIN `catalog_product_entity` e ON v.`product_id` = e.`row_id` 134 | SET v.`new_product_id` = e.`entity_id` 135 | WHERE 1; 136 | 137 | -- Populate `product_id` column for product option 138 | 139 | UPDATE `catalog_product_option` v INNER JOIN `catalog_product_entity` e ON v.`product_id` = e.`row_id` 140 | SET v.`new_product_id` = e.`entity_id` 141 | WHERE 1; 142 | 143 | -- Populate `parent_id` columns for product relation 144 | 145 | UPDATE `catalog_product_relation` v INNER JOIN `catalog_product_entity` e ON v.`parent_id` = e.`row_id` 146 | SET v.`new_parent_id` = e.`entity_id` 147 | WHERE 1; 148 | 149 | -- Populate `product_id` column for super attribute 150 | 151 | UPDATE `catalog_product_super_attribute` v INNER JOIN `catalog_product_entity` e ON v.`product_id` = e.`row_id` 152 | SET v.`new_product_id` = e.`entity_id` 153 | WHERE 1; 154 | 155 | -- Populate `product_id` column for super link 156 | 157 | UPDATE `catalog_product_super_link` v INNER JOIN `catalog_product_entity` e ON v.`parent_id` = e.`row_id` 158 | SET v.`new_parent_id` = e.`entity_id` 159 | WHERE 1; 160 | 161 | -- ------------- 162 | -- Super Link -- 163 | -- ------------- 164 | 165 | ALTER TABLE `catalog_product_super_link` 166 | DROP FOREIGN KEY `CAT_PRD_SPR_LNK_PARENT_ID_CAT_PRD_ENTT_ROW_ID`, 167 | DROP FOREIGN KEY `CAT_PRD_SPR_LNK_PRD_ID_SEQUENCE_PRD_SEQUENCE_VAL`, 168 | DROP INDEX `CATALOG_PRODUCT_SUPER_LINK_PARENT_ID`, 169 | DROP INDEX `CATALOG_PRODUCT_SUPER_LINK_PRODUCT_ID_PARENT_ID`, 170 | DROP COLUMN `parent_id`, 171 | CHANGE COLUMN `new_parent_id` `parent_id` INT(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Parent ID', 172 | ADD INDEX `CATALOG_PRODUCT_SUPER_LINK_PARENT_ID` (`product_id`), 173 | ADD CONSTRAINT `CATALOG_PRODUCT_SUPER_LINK_PRODUCT_ID_PARENT_ID` UNIQUE KEY (`product_id`,`parent_id`); 174 | 175 | -- ------------------ 176 | -- Super Attribute -- 177 | -- ------------------ 178 | 179 | ALTER TABLE `catalog_product_super_attribute` 180 | DROP FOREIGN KEY `CAT_PRD_SPR_ATTR_PRD_ID_CAT_PRD_ENTT_ROW_ID`, 181 | DROP INDEX `CATALOG_PRODUCT_SUPER_ATTRIBUTE_PRODUCT_ID_ATTRIBUTE_ID`, 182 | DROP COLUMN `product_id`, 183 | CHANGE COLUMN `new_product_id` `product_id` INT(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Product ID', 184 | ADD CONSTRAINT `CATALOG_PRODUCT_SUPER_ATTRIBUTE_PRODUCT_ID_ATTRIBUTE_ID` UNIQUE KEY (`product_id`,`attribute_id`); 185 | 186 | -- ------------------- 187 | -- Product Relation -- 188 | -- ------------------- 189 | 190 | ALTER TABLE `catalog_product_relation` 191 | DROP FOREIGN KEY `CATALOG_PRODUCT_RELATION_PARENT_ID_CATALOG_PRODUCT_ENTITY_ROW_ID`, 192 | DROP FOREIGN KEY `CAT_PRD_RELATION_CHILD_ID_SEQUENCE_PRD_SEQUENCE_VAL`, 193 | DROP PRIMARY KEY, 194 | DROP COLUMN `parent_id`, 195 | CHANGE COLUMN `new_parent_id` `parent_id` INT(10) UNSIGNED NOT NULL COMMENT 'Parent ID', 196 | ADD PRIMARY KEY (`parent_id`,`child_id`); 197 | 198 | -- ----------------- 199 | -- Product Option -- 200 | -- ----------------- 201 | 202 | ALTER TABLE `catalog_product_option` 203 | DROP FOREIGN KEY `CATALOG_PRODUCT_OPTION_PRODUCT_ID_CATALOG_PRODUCT_ENTITY_ROW_ID`, 204 | DROP INDEX `CATALOG_PRODUCT_OPTION_PRODUCT_ID`, 205 | DROP COLUMN `product_id`, 206 | CHANGE COLUMN `new_product_id` `product_id` INT(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Product ID', 207 | ADD INDEX `CATALOG_PRODUCT_OPTION_PRODUCT_ID` (`product_id`); 208 | 209 | -- --------------- 210 | -- Product Link -- 211 | -- --------------- 212 | 213 | ALTER TABLE `catalog_product_link` 214 | DROP FOREIGN KEY `CATALOG_PRODUCT_LINK_PRODUCT_ID_CATALOG_PRODUCT_ENTITY_ROW_ID`, 215 | DROP FOREIGN KEY `CAT_PRD_LNK_LNKED_PRD_ID_SEQUENCE_PRD_SEQUENCE_VAL`, 216 | DROP INDEX `CATALOG_PRODUCT_LINK_PRODUCT_ID`, 217 | DROP INDEX `CATALOG_PRODUCT_LINK_LINK_TYPE_ID_PRODUCT_ID_LINKED_PRODUCT_ID`, 218 | DROP COLUMN `product_id`, 219 | CHANGE COLUMN `new_product_id` `product_id` INT(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Product ID', 220 | ADD INDEX `CATALOG_PRODUCT_LINK_PRODUCT_ID` (`product_id`), 221 | ADD CONSTRAINT `CATALOG_PRODUCT_LINK_LINK_TYPE_ID_PRODUCT_ID_LINKED_PRODUCT_ID` UNIQUE KEY (`link_type_id`,`product_id`,`linked_product_id`); 222 | 223 | -- --------------- 224 | -- Downloadable -- 225 | -- --------------- 226 | 227 | ALTER TABLE `downloadable_link` 228 | DROP FOREIGN KEY `DOWNLOADABLE_LINK_PRODUCT_ID_CATALOG_PRODUCT_ENTITY_ROW_ID`, 229 | DROP INDEX `DOWNLOADABLE_LINK_PRODUCT_ID_SORT_ORDER`, 230 | DROP COLUMN `product_id`, 231 | CHANGE COLUMN `new_product_id` `product_id` INT(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Product ID', 232 | ADD INDEX `DOWNLOADABLE_LINK_PRODUCT_ID_SORT_ORDER` (`product_id`,`sort_order`); 233 | 234 | ALTER TABLE `downloadable_sample` 235 | DROP FOREIGN KEY `DOWNLOADABLE_SAMPLE_PRODUCT_ID_CATALOG_PRODUCT_ENTITY_ROW_ID`, 236 | DROP INDEX `DOWNLOADABLE_SAMPLE_PRODUCT_ID`, 237 | DROP COLUMN `product_id`, 238 | CHANGE COLUMN `new_product_id` `product_id` INT(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Product ID', 239 | ADD INDEX `DOWNLOADABLE_SAMPLE_PRODUCT_ID` (`product_id`); 240 | 241 | -- ----------------- 242 | -- Product Bundle -- 243 | -- ----------------- 244 | 245 | ALTER TABLE `catalog_product_bundle_selection_price` 246 | DROP FOREIGN KEY `CAT_PRD_BNDL_SELECTION_PRICE_PARENT_PRD_ID_CAT_PRD_ENTT_ROW_ID`, 247 | DROP FOREIGN KEY `FK_AE9FDBF7988FB6BE3E04D91DA2CFB273`, 248 | DROP PRIMARY KEY, 249 | DROP COLUMN `parent_product_id`, 250 | CHANGE COLUMN `new_parent_product_id` `parent_product_id` INT(10) UNSIGNED NOT NULL COMMENT 'Parent Product ID', 251 | ADD PRIMARY KEY (`selection_id`,`parent_product_id`,`website_id`); 252 | 253 | ALTER TABLE `catalog_product_bundle_selection` 254 | DROP FOREIGN KEY `CAT_PRD_BNDL_SELECTION_OPT_ID_SEQUENCE_PRD_BNDL_OPT_SEQUENCE_VAL`, 255 | DROP FOREIGN KEY `CAT_PRD_BNDL_SELECTION_PARENT_PRD_ID_CAT_PRD_ENTT_ROW_ID`, 256 | DROP FOREIGN KEY `CAT_PRD_BNDL_SELECTION_PRD_ID_SEQUENCE_PRD_SEQUENCE_VAL`, 257 | DROP FOREIGN KEY `FK_606117FEB5F50D0182CEC9D260C05DD2`, 258 | DROP PRIMARY KEY, 259 | DROP COLUMN `parent_product_id`, 260 | CHANGE COLUMN `new_parent_product_id` `parent_product_id` INT(10) UNSIGNED NOT NULL COMMENT 'Parent Product ID', 261 | MODIFY COLUMN `selection_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'Selection ID', 262 | ADD PRIMARY KEY (`selection_id`); 263 | 264 | ALTER TABLE `catalog_product_bundle_option` 265 | DROP FOREIGN KEY `CAT_PRD_BNDL_OPT_OPT_ID_SEQUENCE_PRD_BNDL_OPT_SEQUENCE_VAL`, 266 | DROP FOREIGN KEY `CAT_PRD_BNDL_OPT_PARENT_ID_CAT_PRD_ENTT_ROW_ID`, 267 | DROP INDEX `CATALOG_PRODUCT_BUNDLE_OPTION_PARENT_ID`, 268 | DROP PRIMARY KEY, 269 | DROP COLUMN `parent_id`, 270 | CHANGE COLUMN `new_parent_id` `parent_id` INT(10) UNSIGNED NOT NULL COMMENT 'Parent ID', 271 | ADD INDEX `CATALOG_PRODUCT_BUNDLE_OPTION_PARENT_ID` (`parent_id`), 272 | MODIFY COLUMN `option_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'Option ID', 273 | ADD PRIMARY KEY (`option_id`); 274 | 275 | ALTER TABLE `catalog_product_bundle_option_value` 276 | DROP FOREIGN KEY `CAT_PRD_BNDL_OPT_VAL_OPT_ID_SEQUENCE_PRD_BNDL_OPT_SEQUENCE_VAL`, 277 | DROP FOREIGN KEY `CAT_PRD_BNDL_OPT_VAL_PARENT_PRD_ID_CAT_PRD_ENTT_ROW_ID`, 278 | DROP INDEX `CAT_PRD_BNDL_OPT_VAL_PARENT_PRD_ID_CAT_PRD_ENTT_ROW_ID`, 279 | DROP INDEX `CAT_PRD_BNDL_OPT_VAL_OPT_ID_PARENT_PRD_ID_STORE_ID`, 280 | DROP COLUMN `parent_product_id`, 281 | CHANGE COLUMN `new_parent_product_id` `parent_product_id` INT(10) UNSIGNED NOT NULL COMMENT 'Parent Product ID', 282 | ADD CONSTRAINT `CAT_PRD_BNDL_OPT_VAL_OPT_ID_PARENT_PRD_ID_STORE_ID` UNIQUE KEY (`option_id`,`parent_product_id`,`store_id`), 283 | ADD CONSTRAINT `CAT_PRD_BNDL_OPT_VAL_OPT_ID_CAT_PRD_BNDL_OPT_OPT_ID` FOREIGN KEY (`option_id`) REFERENCES `catalog_product_bundle_option` (`option_id`) ON DELETE CASCADE ON UPDATE RESTRICT; 284 | 285 | ALTER TABLE `catalog_product_bundle_selection` 286 | ADD CONSTRAINT `CAT_PRD_BNDL_SELECTION_OPT_ID_CAT_PRD_BNDL_OPT_OPT_ID` FOREIGN KEY (`option_id`) REFERENCES `catalog_product_bundle_option` (`option_id`) ON DELETE CASCADE ON UPDATE RESTRICT; 287 | 288 | ALTER TABLE `catalog_product_bundle_selection_price` 289 | ADD CONSTRAINT `FK_DCF37523AA05D770A70AA4ED7C2616E4` FOREIGN KEY (`selection_id`) REFERENCES `catalog_product_bundle_selection` (`selection_id`) ON DELETE CASCADE ON UPDATE RESTRICT; 290 | 291 | -- ------------------------------------------------------------------ 292 | -- Update the `entity_id` relation link for catalog product entity -- 293 | -- ------------------------------------------------------------------ 294 | 295 | -- Force Clean Duplicates (should already be cleaned by the latest active version, see upper) 296 | 297 | DELETE FROM catalog_product_entity WHERE row_id NOT IN ( 298 | SELECT tmp_product.row_id FROM (SELECT MAX(row_id) AS row_id FROM catalog_product_entity GROUP BY entity_id) tmp_product 299 | ); 300 | 301 | -- Clean Invalid Entities (May occurs in some cases) 302 | 303 | DELETE FROM `catalog_product_entity` WHERE `entity_id` = 0; 304 | DELETE FROM `catalog_product_entity_datetime` WHERE `entity_id` = 0; 305 | DELETE FROM `catalog_product_entity_decimal` WHERE `entity_id` = 0; 306 | DELETE FROM `catalog_product_entity_gallery` WHERE `entity_id` = 0; 307 | DELETE FROM `catalog_product_entity_int` WHERE `entity_id` = 0; 308 | DELETE FROM `catalog_product_entity_media_gallery_value` WHERE `entity_id` = 0; 309 | DELETE FROM `catalog_product_entity_media_gallery_value_to_entity` WHERE `entity_id` = 0; 310 | DELETE FROM `catalog_product_entity_text` WHERE `entity_id` = 0; 311 | DELETE FROM `catalog_product_entity_tier_price` WHERE `entity_id` = 0; 312 | DELETE FROM `catalog_product_entity_varchar` WHERE `entity_id` = 0; 313 | 314 | -- Datetime 315 | ALTER TABLE `catalog_product_entity_datetime` 316 | DROP FOREIGN KEY `CAT_PRD_ENTT_DTIME_ROW_ID_CAT_PRD_ENTT_ROW_ID`, 317 | DROP INDEX `CATALOG_PRODUCT_ENTITY_DATETIME_ROW_ID_ATTRIBUTE_ID_STORE_ID`, 318 | ADD CONSTRAINT `CATALOG_PRODUCT_ENTITY_DATETIME_ENTITY_ID_ATTRIBUTE_ID_STORE_ID` UNIQUE KEY (`entity_id`,`attribute_id`,`store_id`), 319 | DROP COLUMN `row_id`; 320 | 321 | -- Decimal 322 | ALTER TABLE `catalog_product_entity_decimal` 323 | DROP FOREIGN KEY `CAT_PRD_ENTT_DEC_ROW_ID_CAT_PRD_ENTT_ROW_ID`, 324 | DROP INDEX `CATALOG_PRODUCT_ENTITY_DECIMAL_ROW_ID_ATTRIBUTE_ID_STORE_ID`, 325 | ADD CONSTRAINT `CATALOG_PRODUCT_ENTITY_DECIMAL_ENTITY_ID_ATTRIBUTE_ID_STORE_ID` UNIQUE KEY (`entity_id`,`attribute_id`,`store_id`), 326 | DROP COLUMN `row_id`; 327 | 328 | -- Int 329 | ALTER TABLE `catalog_product_entity_int` 330 | DROP FOREIGN KEY `CATALOG_PRODUCT_ENTITY_INT_ROW_ID_CATALOG_PRODUCT_ENTITY_ROW_ID`, 331 | DROP INDEX `CATALOG_PRODUCT_ENTITY_INT_ROW_ID_ATTRIBUTE_ID_STORE_ID`, 332 | ADD CONSTRAINT `CATALOG_PRODUCT_ENTITY_INT_ENTITY_ID_ATTRIBUTE_ID_STORE_ID` UNIQUE KEY (`entity_id`,`attribute_id`,`store_id`), 333 | DROP COLUMN `row_id`; 334 | 335 | -- Text 336 | ALTER TABLE `catalog_product_entity_text` 337 | DROP FOREIGN KEY `CATALOG_PRODUCT_ENTITY_TEXT_ROW_ID_CATALOG_PRODUCT_ENTITY_ROW_ID`, 338 | DROP INDEX `CATALOG_PRODUCT_ENTITY_TEXT_ROW_ID_ATTRIBUTE_ID_STORE_ID`, 339 | ADD CONSTRAINT `CATALOG_PRODUCT_ENTITY_TEXT_ENTITY_ID_ATTRIBUTE_ID_STORE_ID` UNIQUE KEY (`entity_id`,`attribute_id`,`store_id`), 340 | DROP COLUMN `row_id`; 341 | 342 | -- Varchar 343 | ALTER TABLE `catalog_product_entity_varchar` 344 | DROP FOREIGN KEY `CAT_PRD_ENTT_VCHR_ROW_ID_CAT_PRD_ENTT_ROW_ID`, 345 | DROP INDEX `CATALOG_PRODUCT_ENTITY_VARCHAR_ROW_ID_ATTRIBUTE_ID_STORE_ID`, 346 | ADD CONSTRAINT `CATALOG_PRODUCT_ENTITY_VARCHAR_ENTITY_ID_ATTRIBUTE_ID_STORE_ID` UNIQUE KEY (`entity_id`,`attribute_id`,`store_id`), 347 | DROP COLUMN `row_id`; 348 | 349 | -- Gallery value to entity 350 | ALTER TABLE `catalog_product_entity_media_gallery_value_to_entity` 351 | DROP FOREIGN KEY `CAT_PRD_ENTT_MDA_GLR_VAL_TO_ENTT_ROW_ID_CAT_PRD_ENTT_ROW_ID`, 352 | DROP INDEX `CAT_PRD_ENTT_MDA_GLR_VAL_TO_ENTT_ROW_ID_CAT_PRD_ENTT_ROW_ID`, 353 | ADD CONSTRAINT `CAT_PRD_ENTT_MDA_GLR_VAL_TO_ENTT_VAL_ID_ENTT_ID` UNIQUE KEY (`value_id`,`entity_id`), 354 | DROP PRIMARY KEY, 355 | ADD PRIMARY KEY (`value_id`,`entity_id`), 356 | DROP COLUMN `row_id`; 357 | 358 | -- Gallery value 359 | ALTER TABLE `catalog_product_entity_media_gallery_value` 360 | DROP FOREIGN KEY `CAT_PRD_ENTT_MDA_GLR_VAL_ROW_ID_CAT_PRD_ENTT_ROW_ID`, 361 | DROP INDEX `CATALOG_PRODUCT_ENTITY_MEDIA_GALLERY_VALUE_ROW_ID`, 362 | DROP INDEX `CAT_PRD_ENTT_MDA_GLR_VAL_ROW_ID_VAL_ID_STORE_ID`, 363 | ADD INDEX `CATALOG_PRODUCT_ENTITY_MEDIA_GALLERY_VALUE_ENTITY_ID` (`entity_id`), 364 | ADD CONSTRAINT `CAT_PRD_ENTT_MDA_GLR_VAL_ENTT_ID_VAL_ID_STORE_ID` UNIQUE KEY (`entity_id`,`value_id`,`store_id`), 365 | DROP COLUMN `row_id`; 366 | 367 | -- Gallery 368 | ALTER TABLE `catalog_product_entity_gallery` 369 | DROP FOREIGN KEY `CAT_PRD_ENTT_GLR_ROW_ID_CAT_PRD_ENTT_ROW_ID`, 370 | DROP INDEX `CATALOG_PRODUCT_ENTITY_GALLERY_ROW_ID`, 371 | DROP INDEX `CATALOG_PRODUCT_ENTITY_GALLERY_ROW_ID_ATTRIBUTE_ID_STORE_ID`, 372 | ADD INDEX `CATALOG_PRODUCT_ENTITY_GALLERY_ENTITY_ID` (`entity_id`), 373 | ADD CONSTRAINT `CATALOG_PRODUCT_ENTITY_GALLERY_ENTITY_ID_ATTRIBUTE_ID_STORE_ID` UNIQUE KEY (`entity_id`,`attribute_id`,`store_id`), 374 | DROP COLUMN `row_id`; 375 | 376 | -- Tier price 377 | ALTER TABLE `catalog_product_entity_tier_price` 378 | DROP FOREIGN KEY `CAT_PRD_ENTT_TIER_PRICE_ROW_ID_CAT_PRD_ENTT_ROW_ID`, 379 | DROP INDEX `UNQ_EBC6A54F44DFA66FA9024CAD97FED6C7`, 380 | ADD CONSTRAINT `UNQ_E8AB433B9ACB00343ABB312AD2FAB087` UNIQUE KEY (`entity_id`,`all_groups`,`customer_group_id`,`qty`,`website_id`), 381 | DROP COLUMN `row_id`; 382 | 383 | -- Entity 384 | SET FOREIGN_KEY_CHECKS = 0; 385 | ALTER TABLE `catalog_product_entity` 386 | DROP INDEX `CATALOG_PRODUCT_ENTITY_ENTITY_ID_CREATED_IN_UPDATED_IN`, 387 | DROP FOREIGN KEY `CATALOG_PRODUCT_ENTITY_ENTITY_ID_SEQUENCE_PRODUCT_SEQUENCE_VALUE`, 388 | DROP COLUMN `row_id`, 389 | DROP COLUMN `created_in`, 390 | DROP COLUMN `updated_in`, 391 | MODIFY COLUMN `entity_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'Entity ID', 392 | ADD PRIMARY KEY (`entity_id`); 393 | SET FOREIGN_KEY_CHECKS = 1; 394 | 395 | -- Foreign keys 396 | ALTER TABLE `catalog_product_entity_datetime` 397 | ADD CONSTRAINT `CAT_PRD_ENTT_DTIME_ENTT_ID_CAT_PRD_ENTT_ENTT_ID` FOREIGN KEY (`entity_id`) REFERENCES `catalog_product_entity` (`entity_id`) ON DELETE CASCADE ON UPDATE RESTRICT; 398 | ALTER TABLE `catalog_product_entity_decimal` 399 | ADD CONSTRAINT `CAT_PRD_ENTT_DEC_ENTT_ID_CAT_PRD_ENTT_ENTT_ID` FOREIGN KEY (`entity_id`) REFERENCES `catalog_product_entity` (`entity_id`) ON DELETE CASCADE ON UPDATE RESTRICT; 400 | ALTER TABLE `catalog_product_entity_int` 401 | ADD CONSTRAINT `CAT_PRD_ENTT_INT_ENTT_ID_CAT_PRD_ENTT_ENTT_ID` FOREIGN KEY (`entity_id`) REFERENCES `catalog_product_entity` (`entity_id`) ON DELETE CASCADE ON UPDATE RESTRICT; 402 | ALTER TABLE `catalog_product_entity_text` 403 | ADD CONSTRAINT `CAT_PRD_ENTT_TEXT_ENTT_ID_CAT_PRD_ENTT_ENTT_ID` FOREIGN KEY (`entity_id`) REFERENCES `catalog_product_entity` (`entity_id`) ON DELETE CASCADE ON UPDATE RESTRICT; 404 | ALTER TABLE `catalog_product_entity_varchar` 405 | ADD CONSTRAINT `CAT_PRD_ENTT_VCHR_ENTT_ID_CAT_PRD_ENTT_ENTT_ID` FOREIGN KEY (`entity_id`) REFERENCES `catalog_product_entity` (`entity_id`) ON DELETE CASCADE ON UPDATE RESTRICT; 406 | ALTER TABLE `catalog_product_entity_gallery` 407 | ADD CONSTRAINT `CAT_PRD_ENTT_GLR_ENTT_ID_CAT_PRD_ENTT_ENTT_ID` FOREIGN KEY (`entity_id`) REFERENCES `catalog_product_entity` (`entity_id`) ON DELETE CASCADE ON UPDATE RESTRICT; 408 | ALTER TABLE `catalog_product_entity_media_gallery_value` 409 | ADD CONSTRAINT `CAT_PRD_ENTT_MDA_GLR_VAL_ENTT_ID_CAT_PRD_ENTT_ENTT_ID` FOREIGN KEY (`entity_id`) REFERENCES `catalog_product_entity` (`entity_id`) ON DELETE CASCADE ON UPDATE RESTRICT; 410 | ALTER TABLE `catalog_product_entity_media_gallery_value_to_entity` 411 | ADD CONSTRAINT `CAT_PRD_ENTT_MDA_GLR_VAL_TO_ENTT_ENTT_ID_CAT_PRD_ENTT_ENTT_ID` FOREIGN KEY (`entity_id`) REFERENCES `catalog_product_entity` (`entity_id`) ON DELETE CASCADE ON UPDATE RESTRICT; 412 | ALTER TABLE `catalog_product_entity_tier_price` 413 | ADD CONSTRAINT `CAT_PRD_ENTT_TIER_PRICE_ENTT_ID_CAT_PRD_ENTT_ENTT_ID` FOREIGN KEY (`entity_id`) REFERENCES `catalog_product_entity` (`entity_id`) ON DELETE CASCADE ON UPDATE RESTRICT; 414 | ALTER TABLE `catalog_product_bundle_option` 415 | ADD CONSTRAINT `CAT_PRD_BNDL_OPT_PARENT_ID_CAT_PRD_ENTT_ENTT_ID` FOREIGN KEY (`parent_id`) REFERENCES `catalog_product_entity` (`entity_id`) ON DELETE CASCADE ON UPDATE RESTRICT; 416 | ALTER TABLE `catalog_product_bundle_selection` 417 | ADD CONSTRAINT `CAT_PRD_BNDL_SELECTION_PRD_ID_CAT_PRD_ENTT_ENTT_ID` FOREIGN KEY (`product_id`) REFERENCES `catalog_product_entity` (`entity_id`) ON DELETE CASCADE ON UPDATE RESTRICT; 418 | ALTER TABLE `downloadable_link` 419 | ADD CONSTRAINT `DOWNLOADABLE_LINK_PRODUCT_ID_CATALOG_PRODUCT_ENTITY_ENTITY_ID` FOREIGN KEY (`product_id`) REFERENCES `catalog_product_entity` (`entity_id`) ON DELETE CASCADE ON UPDATE RESTRICT; 420 | ALTER TABLE `downloadable_sample` 421 | ADD CONSTRAINT `DOWNLOADABLE_SAMPLE_PRODUCT_ID_CATALOG_PRODUCT_ENTITY_ENTITY_ID` FOREIGN KEY (`product_id`) REFERENCES `catalog_product_entity` (`entity_id`) ON DELETE CASCADE ON UPDATE RESTRICT; 422 | DELETE FROM `catalog_product_link` WHERE `linked_product_id` NOT IN (SELECT `entity_id` FROM `catalog_product_entity`); 423 | ALTER TABLE `catalog_product_link` 424 | ADD CONSTRAINT `CATALOG_PRODUCT_LINK_PRODUCT_ID_CATALOG_PRODUCT_ENTITY_ENTITY_ID` FOREIGN KEY (`product_id`) REFERENCES `catalog_product_entity` (`entity_id`) ON DELETE CASCADE ON UPDATE RESTRICT, 425 | ADD CONSTRAINT `CAT_PRD_LNK_LNKED_PRD_ID_CAT_PRD_ENTT_ENTT_ID` FOREIGN KEY (`linked_product_id`) REFERENCES `catalog_product_entity` (`entity_id`) ON DELETE CASCADE ON UPDATE RESTRICT; 426 | ALTER TABLE `catalog_product_option` 427 | ADD CONSTRAINT `CAT_PRD_OPT_PRD_ID_CAT_PRD_ENTT_ENTT_ID` FOREIGN KEY (`product_id`) REFERENCES `catalog_product_entity` (`entity_id`) ON DELETE CASCADE ON UPDATE RESTRICT; 428 | ALTER TABLE `catalog_product_relation` 429 | ADD CONSTRAINT `CAT_PRD_RELATION_CHILD_ID_CAT_PRD_ENTT_ENTT_ID` FOREIGN KEY (`child_id`) REFERENCES `catalog_product_entity` (`entity_id`) ON DELETE CASCADE ON UPDATE RESTRICT, 430 | ADD CONSTRAINT `CAT_PRD_RELATION_PARENT_ID_CAT_PRD_ENTT_ENTT_ID` FOREIGN KEY (`parent_id`) REFERENCES `catalog_product_entity` (`entity_id`) ON DELETE CASCADE ON UPDATE RESTRICT; 431 | ALTER TABLE `catalog_product_super_attribute` 432 | ADD CONSTRAINT `CAT_PRD_SPR_ATTR_PRD_ID_CAT_PRD_ENTT_ENTT_ID` FOREIGN KEY (`product_id`) REFERENCES `catalog_product_entity` (`entity_id`) ON DELETE CASCADE ON UPDATE RESTRICT; 433 | ALTER TABLE `catalog_product_super_link` 434 | ADD CONSTRAINT `CAT_PRD_SPR_LNK_PARENT_ID_CAT_PRD_ENTT_ENTT_ID` FOREIGN KEY (`parent_id`) REFERENCES `catalog_product_entity` (`entity_id`) ON DELETE CASCADE ON UPDATE RESTRICT, 435 | ADD CONSTRAINT `CAT_PRD_SPR_LNK_PRD_ID_CAT_PRD_ENTT_ENTT_ID` FOREIGN KEY (`product_id`) REFERENCES `catalog_product_entity` (`entity_id`) ON DELETE CASCADE ON UPDATE RESTRICT; 436 | 437 | -- ---------------- 438 | -- Drop sequence -- 439 | -- ---------------- 440 | DELETE FROM `catalog_category_product` WHERE `product_id` NOT IN (SELECT `entity_id` FROM `catalog_product_entity`); 441 | ALTER TABLE `catalog_category_product` 442 | DROP FOREIGN KEY `CAT_CTGR_PRD_PRD_ID_SEQUENCE_PRD_SEQUENCE_VAL`, 443 | ADD CONSTRAINT `CAT_CTGR_PRD_PRD_ID_CAT_PRD_ENTT_ENTT_ID` FOREIGN KEY (`product_id`) REFERENCES `catalog_product_entity` (`entity_id`) ON DELETE CASCADE ON UPDATE RESTRICT; 444 | 445 | ALTER TABLE `catalog_compare_item` 446 | DROP FOREIGN KEY `CATALOG_COMPARE_ITEM_PRODUCT_ID_SEQUENCE_PRODUCT_SEQUENCE_VALUE`, 447 | ADD CONSTRAINT `CATALOG_COMPARE_ITEM_PRODUCT_ID_CATALOG_PRODUCT_ENTITY_ENTITY_ID` FOREIGN KEY (`product_id`) REFERENCES `catalog_product_entity` (`entity_id`) ON DELETE CASCADE ON UPDATE RESTRICT; 448 | 449 | ALTER TABLE `catalog_product_bundle_price_index` 450 | DROP FOREIGN KEY `CAT_PRD_BNDL_PRICE_IDX_ENTT_ID_SEQUENCE_PRD_SEQUENCE_VAL`, 451 | ADD CONSTRAINT `CAT_PRD_BNDL_PRICE_IDX_ENTT_ID_CAT_PRD_ENTT_ENTT_ID` FOREIGN KEY (`entity_id`) REFERENCES `catalog_product_entity` (`entity_id`) ON DELETE CASCADE ON UPDATE RESTRICT; 452 | 453 | ALTER TABLE `catalog_product_index_tier_price` 454 | DROP FOREIGN KEY `CAT_PRD_IDX_TIER_PRICE_ENTT_ID_SEQUENCE_PRD_SEQUENCE_VAL`, 455 | ADD CONSTRAINT `CAT_PRD_IDX_TIER_PRICE_ENTT_ID_CAT_PRD_ENTT_ENTT_ID` FOREIGN KEY (`entity_id`) REFERENCES `catalog_product_entity` (`entity_id`) ON DELETE CASCADE ON UPDATE RESTRICT; 456 | 457 | DELETE FROM `catalog_product_website` WHERE `product_id` NOT IN (SELECT `entity_id` FROM `catalog_product_entity`); 458 | ALTER TABLE `catalog_product_website` 459 | DROP FOREIGN KEY `CAT_PRD_WS_PRD_ID_SEQUENCE_PRD_SEQUENCE_VAL`, 460 | ADD CONSTRAINT `CAT_PRD_WS_PRD_ID_CAT_PRD_ENTT_ENTT_ID` FOREIGN KEY (`product_id`) REFERENCES `catalog_product_entity` (`entity_id`) ON DELETE CASCADE ON UPDATE RESTRICT; 461 | 462 | DELETE c.* FROM `catalog_url_rewrite_product_category` c LEFT JOIN catalog_product_entity p ON c.product_id = p.entity_id WHERE p.entity_id IS NULL; 463 | ALTER TABLE `catalog_url_rewrite_product_category` 464 | DROP FOREIGN KEY `CAT_URL_REWRITE_PRD_CTGR_PRD_ID_SEQUENCE_PRD_SEQUENCE_VAL`, 465 | ADD CONSTRAINT `CAT_URL_REWRITE_PRD_CTGR_PRD_ID_CAT_PRD_ENTT_ENTT_ID` FOREIGN KEY (`product_id`) REFERENCES `catalog_product_entity` (`entity_id`) ON DELETE CASCADE ON UPDATE RESTRICT; 466 | 467 | DELETE FROM `cataloginventory_stock_item` WHERE `product_id` NOT IN (SELECT `entity_id` FROM `catalog_product_entity`); 468 | ALTER TABLE `cataloginventory_stock_item` 469 | DROP FOREIGN KEY `CATINV_STOCK_ITEM_PRD_ID_SEQUENCE_PRD_SEQUENCE_VAL`, 470 | ADD CONSTRAINT `CATINV_STOCK_ITEM_PRD_ID_CAT_PRD_ENTT_ENTT_ID` FOREIGN KEY (`product_id`) REFERENCES `catalog_product_entity` (`entity_id`) ON DELETE CASCADE ON UPDATE RESTRICT; 471 | 472 | ALTER TABLE `product_alert_price` 473 | DROP FOREIGN KEY `PRODUCT_ALERT_PRICE_PRODUCT_ID_SEQUENCE_PRODUCT_SEQUENCE_VALUE`, 474 | ADD CONSTRAINT `PRODUCT_ALERT_PRICE_PRODUCT_ID_CATALOG_PRODUCT_ENTITY_ENTITY_ID` FOREIGN KEY (`product_id`) REFERENCES `catalog_product_entity` (`entity_id`) ON DELETE CASCADE ON UPDATE RESTRICT; 475 | 476 | ALTER TABLE `product_alert_stock` 477 | DROP FOREIGN KEY `PRODUCT_ALERT_STOCK_PRODUCT_ID_SEQUENCE_PRODUCT_SEQUENCE_VALUE`, 478 | ADD CONSTRAINT `PRODUCT_ALERT_STOCK_PRODUCT_ID_CATALOG_PRODUCT_ENTITY_ENTITY_ID` FOREIGN KEY (`product_id`) REFERENCES `catalog_product_entity` (`entity_id`) ON DELETE CASCADE ON UPDATE RESTRICT; 479 | 480 | ALTER TABLE `report_compared_product_index` 481 | DROP FOREIGN KEY `REPORT_CMPD_PRD_IDX_PRD_ID_SEQUENCE_PRD_SEQUENCE_VAL`, 482 | ADD CONSTRAINT `REPORT_CMPD_PRD_IDX_PRD_ID_CAT_PRD_ENTT_ENTT_ID` FOREIGN KEY (`product_id`) REFERENCES `catalog_product_entity` (`entity_id`) ON DELETE CASCADE ON UPDATE RESTRICT; 483 | 484 | ALTER TABLE `report_viewed_product_aggregated_daily` 485 | DROP FOREIGN KEY `REPORT_VIEWED_PRD_AGGRED_DAILY_PRD_ID_SEQUENCE_PRD_SEQUENCE_VAL`, 486 | ADD CONSTRAINT `REPORT_VIEWED_PRD_AGGRED_DAILY_PRD_ID_CAT_PRD_ENTT_ENTT_ID` FOREIGN KEY (`product_id`) REFERENCES `catalog_product_entity` (`entity_id`) ON DELETE CASCADE ON UPDATE RESTRICT; 487 | 488 | ALTER TABLE `report_viewed_product_aggregated_monthly` 489 | DROP FOREIGN KEY `FK_0140003A30AFC1A9188D723C4634BA5D`, 490 | ADD CONSTRAINT `REPORT_VIEWED_PRD_AGGRED_MONTHLY_PRD_ID_CAT_PRD_ENTT_ENTT_ID` FOREIGN KEY (`product_id`) REFERENCES `catalog_product_entity` (`entity_id`) ON DELETE CASCADE ON UPDATE RESTRICT; 491 | 492 | ALTER TABLE `report_viewed_product_aggregated_yearly` 493 | DROP FOREIGN KEY `REPORT_VIEWED_PRD_AGGRED_YEARLY_PRD_ID_SEQUENCE_PRD_SEQUENCE_VAL`, 494 | ADD CONSTRAINT `REPORT_VIEWED_PRD_AGGRED_YEARLY_PRD_ID_CAT_PRD_ENTT_ENTT_ID` FOREIGN KEY (`product_id`) REFERENCES `catalog_product_entity` (`entity_id`) ON DELETE CASCADE ON UPDATE RESTRICT; 495 | 496 | ALTER TABLE `report_viewed_product_index` 497 | DROP FOREIGN KEY `REPORT_VIEWED_PRD_IDX_PRD_ID_SEQUENCE_PRD_SEQUENCE_VAL`, 498 | ADD CONSTRAINT `REPORT_VIEWED_PRD_IDX_PRD_ID_CAT_PRD_ENTT_ENTT_ID` FOREIGN KEY (`product_id`) REFERENCES `catalog_product_entity` (`entity_id`) ON DELETE CASCADE ON UPDATE RESTRICT; 499 | 500 | ALTER TABLE `weee_tax` 501 | DROP FOREIGN KEY `WEEE_TAX_ENTITY_ID_SEQUENCE_PRODUCT_SEQUENCE_VALUE`, 502 | ADD CONSTRAINT `WEEE_TAX_ENTITY_ID_CATALOG_PRODUCT_ENTITY_ENTITY_ID` FOREIGN KEY (`entity_id`) REFERENCES `catalog_product_entity` (`entity_id`) ON DELETE CASCADE ON UPDATE RESTRICT; 503 | 504 | ALTER TABLE `wishlist_item` 505 | DROP FOREIGN KEY `WISHLIST_ITEM_PRODUCT_ID_SEQUENCE_PRODUCT_SEQUENCE_VALUE`, 506 | ADD CONSTRAINT `WISHLIST_ITEM_PRODUCT_ID_CATALOG_PRODUCT_ENTITY_ENTITY_ID` FOREIGN KEY (`product_id`) REFERENCES `catalog_product_entity` (`entity_id`) ON DELETE CASCADE ON UPDATE RESTRICT; 507 | 508 | DROP TABLE `sequence_product_bundle_selection`,`sequence_product_bundle_option`,`sequence_product`; 509 | -------------------------------------------------------------------------------- /scripts/quote.sql: -------------------------------------------------------------------------------- 1 | # These columns are add by these three EE modules: Magento_CustomerBalance, Magento_GiftCardAccount and Magento_GiftRegistry 2 | ALTER TABLE `quote` 3 | DROP COLUMN `customer_balance_amount_used`, 4 | DROP COLUMN `base_customer_bal_amount_used`, 5 | DROP COLUMN `use_customer_balance`, 6 | 7 | DROP COLUMN `gift_cards`, 8 | DROP COLUMN `gift_cards_amount`, 9 | DROP COLUMN `base_gift_cards_amount`, 10 | DROP COLUMN `gift_cards_amount_used`, 11 | DROP COLUMN `base_gift_cards_amount_used`, 12 | 13 | DROP COLUMN `use_reward_points`, 14 | DROP COLUMN `reward_points_balance`, 15 | DROP COLUMN `base_reward_currency_amount`, 16 | DROP COLUMN `reward_currency_amount`; 17 | 18 | ALTER TABLE `quote_item` 19 | DROP COLUMN `giftregistry_item_id`, 20 | DROP COLUMN `event_id`; 21 | 22 | ALTER TABLE `quote_address` 23 | DROP COLUMN `base_customer_balance_amount`, 24 | DROP COLUMN `customer_balance_amount`, 25 | 26 | DROP COLUMN `gift_cards_amount`, 27 | DROP COLUMN `base_gift_cards_amount`, 28 | DROP COLUMN `gift_cards`, 29 | DROP COLUMN `used_gift_cards`, 30 | DROP COLUMN `giftregistry_item_id`, 31 | 32 | DROP COLUMN `reward_points_balance`, 33 | DROP COLUMN `base_reward_currency_amount`, 34 | DROP COLUMN `reward_currency_amount`; 35 | -------------------------------------------------------------------------------- /scripts/sales.sql: -------------------------------------------------------------------------------- 1 | # These columns are add by these three EE modules: Magento_CustomerBalance, Magento_GiftCardAccount and Magento_GiftRegistry 2 | ALTER TABLE `sales_order` 3 | DROP COLUMN `base_customer_balance_amount`, 4 | DROP COLUMN `customer_balance_amount`, 5 | DROP COLUMN `base_customer_balance_invoiced`, 6 | DROP COLUMN `customer_balance_invoiced`, 7 | DROP COLUMN `base_customer_balance_refunded`, 8 | DROP COLUMN `customer_balance_refunded`, 9 | DROP COLUMN `customer_bal_total_refunded`, 10 | DROP COLUMN `bs_customer_bal_total_refunded`, 11 | 12 | DROP COLUMN `gift_cards`, 13 | DROP COLUMN `base_gift_cards_amount`, 14 | DROP COLUMN `gift_cards_amount`, 15 | DROP COLUMN `base_gift_cards_invoiced`, 16 | DROP COLUMN `gift_cards_invoiced`, 17 | DROP COLUMN `base_gift_cards_refunded`, 18 | DROP COLUMN `gift_cards_refunded`, 19 | 20 | DROP COLUMN `reward_points_balance`, 21 | DROP COLUMN `base_reward_currency_amount`, 22 | DROP COLUMN `reward_currency_amount`, 23 | DROP COLUMN `base_rwrd_crrncy_amt_invoiced`, 24 | DROP COLUMN `rwrd_currency_amount_invoiced`, 25 | DROP COLUMN `base_rwrd_crrncy_amnt_refnded`, 26 | DROP COLUMN `rwrd_crrncy_amnt_refunded`, 27 | DROP COLUMN `reward_points_balance_refund`; 28 | 29 | ALTER TABLE `sales_order_item` 30 | DROP COLUMN `giftregistry_item_id`, 31 | DROP COLUMN `event_id`, 32 | DROP COLUMN `qty_returned`; 33 | 34 | ALTER TABLE `sales_order_address` 35 | DROP COLUMN `giftregistry_item_id`; 36 | 37 | ALTER TABLE `sales_invoice` 38 | DROP COLUMN `base_customer_balance_amount`, 39 | DROP COLUMN `customer_balance_amount`, 40 | 41 | DROP COLUMN `base_gift_cards_amount`, 42 | DROP COLUMN `gift_cards_amount`, 43 | 44 | DROP COLUMN `base_reward_currency_amount`, 45 | DROP COLUMN `reward_currency_amount`, 46 | DROP COLUMN `reward_points_balance`; 47 | 48 | ALTER TABLE `sales_creditmemo` 49 | DROP COLUMN `base_customer_balance_amount`, 50 | DROP COLUMN `customer_balance_amount`, 51 | DROP COLUMN `bs_customer_bal_total_refunded`, 52 | DROP COLUMN `customer_bal_total_refunded`, 53 | 54 | DROP COLUMN `base_gift_cards_amount`, 55 | DROP COLUMN `gift_cards_amount`, 56 | 57 | DROP COLUMN `base_reward_currency_amount`, 58 | DROP COLUMN `reward_currency_amount`, 59 | DROP COLUMN `reward_points_balance`, 60 | DROP COLUMN `reward_points_balance_refund`; 61 | 62 | ALTER TABLE `sales_order_grid` 63 | DROP COLUMN `refunded_to_store_credit`; 64 | -------------------------------------------------------------------------------- /scripts/salesrule.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXISTS 2 | `magento_banner_salesrule`, 3 | `magento_reward_salesrule`, 4 | `magento_salesrule_filter`, 5 | `magento_reminder_rule_coupon`, 6 | `magento_reminder_rule_website`, 7 | `magento_reminder_template`, 8 | `magento_reminder_rule_log`, 9 | `magento_reminder_rule`; 10 | 11 | -- Enable `rule_id` column for salesrule 12 | 13 | ALTER TABLE `salesrule_customer_group` 14 | ADD COLUMN `rule_id` INT(10) UNSIGNED NOT NULL COMMENT 'Rule ID'; 15 | ALTER TABLE `salesrule_website` 16 | ADD COLUMN `rule_id` INT(10) UNSIGNED NOT NULL COMMENT 'Rule ID'; 17 | ALTER TABLE `salesrule_product_attribute` 18 | ADD COLUMN `rule_id` INT(10) UNSIGNED NOT NULL COMMENT 'Rule ID'; 19 | ALTER TABLE `salesrule_label` 20 | ADD COLUMN `rule_id` INT(10) UNSIGNED NOT NULL COMMENT 'Rule ID'; 21 | 22 | -- Clean duplicates for salesrule 23 | 24 | DELETE e 25 | FROM `salesrule` e 26 | LEFT OUTER JOIN ( 27 | SELECT MAX(`updated_in`) AS `last_updated_in`,`rule_id` 28 | FROM `salesrule` 29 | GROUP BY `rule_id` 30 | ) AS p 31 | ON e.`rule_id` = p.`rule_id` AND e.`updated_in` = p.`last_updated_in` 32 | WHERE p.`last_updated_in` IS NULL; 33 | 34 | -- Populate `rule_id` column for salesrule 35 | 36 | UPDATE `salesrule_customer_group` v INNER JOIN `salesrule` e ON v.`row_id` = e.`row_id` 37 | SET v.`rule_id` = e.`rule_id` 38 | WHERE 1; 39 | UPDATE `salesrule_website` v INNER JOIN `salesrule` e ON v.`row_id` = e.`row_id` 40 | SET v.`rule_id` = e.`rule_id` 41 | WHERE 1; 42 | UPDATE `salesrule_product_attribute` v INNER JOIN `salesrule` e ON v.`row_id` = e.`row_id` 43 | SET v.`rule_id` = e.`rule_id` 44 | WHERE 1; 45 | UPDATE `salesrule_label` v INNER JOIN `salesrule` e ON v.`row_id` = e.`row_id` 46 | SET v.`rule_id` = e.`rule_id` 47 | WHERE 1; 48 | 49 | -- ----------------------------------------------------- 50 | -- Update the `rule_id` relation link for salesrule -- 51 | -- ----------------------------------------------------- 52 | 53 | -- Customer group 54 | ALTER TABLE `salesrule_customer_group` 55 | DROP FOREIGN KEY `SALESRULE_CUSTOMER_GROUP_ROW_ID_SALESRULE_ROW_ID`, 56 | DROP PRIMARY KEY, 57 | ADD PRIMARY KEY (`rule_id`,`customer_group_id`), 58 | DROP COLUMN `row_id`; 59 | 60 | -- Website 61 | ALTER TABLE `salesrule_website` 62 | DROP FOREIGN KEY `SALESRULE_WEBSITE_ROW_ID_SALESRULE_ROW_ID`, 63 | DROP PRIMARY KEY, 64 | ADD PRIMARY KEY (`rule_id`,`website_id`), 65 | DROP COLUMN `row_id`; 66 | 67 | -- Product Attribute 68 | ALTER TABLE `salesrule_product_attribute` 69 | DROP FOREIGN KEY `SALESRULE_PRODUCT_ATTRIBUTE_ROW_ID_SALESRULE_ROW_ID`, 70 | DROP PRIMARY KEY, 71 | ADD PRIMARY KEY (`rule_id`,`website_id`,`customer_group_id`,`attribute_id`), 72 | DROP COLUMN `row_id`; 73 | 74 | -- Label Attribute 75 | ALTER TABLE `salesrule_label` 76 | DROP FOREIGN KEY `SALESRULE_LABEL_ROW_ID_SALESRULE_ROW_ID`, 77 | DROP PRIMARY KEY, ADD PRIMARY KEY (`label_id`), 78 | DROP KEY `SALESRULE_LABEL_ROW_ID_STORE_ID`, ADD UNIQUE KEY `SALESRULE_LABEL_RULE_ID_STORE_ID` (`rule_id`, `store_id`), 79 | DROP COLUMN `row_id`; 80 | 81 | -- Salesrule 82 | ALTER TABLE `salesrule` 83 | DROP FOREIGN KEY `SALESRULE_RULE_ID_SEQUENCE_SALESRULE_SEQUENCE_VALUE`, 84 | DROP COLUMN `row_id`, 85 | DROP COLUMN `created_in`, 86 | DROP COLUMN `updated_in`, 87 | ADD PRIMARY KEY (`rule_id`), 88 | MODIFY COLUMN `rule_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'Entity ID'; 89 | 90 | -- Foreign keys 91 | ALTER TABLE `salesrule_customer_group` 92 | ADD CONSTRAINT `SALESRULE_CUSTOMER_GROUP_RULE_ID_SALESRULE_RULE_ID` FOREIGN KEY (`rule_id`) REFERENCES `salesrule` (`rule_id`) ON DELETE CASCADE ON UPDATE RESTRICT; 93 | ALTER TABLE `salesrule_website` 94 | ADD CONSTRAINT `SALESRULE_WEBSITE_RULE_ID_SALESRULE_RULE_ID` FOREIGN KEY (`rule_id`) REFERENCES `salesrule` (`rule_id`) ON DELETE CASCADE ON UPDATE RESTRICT; 95 | ALTER TABLE `salesrule_product_attribute` 96 | ADD CONSTRAINT `SALESRULE_PRODUCT_ATTRIBUTE_RULE_ID_SALESRULE_RULE_ID` FOREIGN KEY (`rule_id`) REFERENCES `salesrule` (`rule_id`) ON DELETE CASCADE ON UPDATE RESTRICT; 97 | 98 | -- ---------------- 99 | -- Drop sequence -- 100 | -- ---------------- 101 | 102 | ALTER TABLE `salesrule_coupon` 103 | DROP FOREIGN KEY `SALESRULE_COUPON_RULE_ID_SEQUENCE_SALESRULE_SEQUENCE_VALUE`, 104 | ADD CONSTRAINT `SALESRULE_COUPON_RULE_ID_SALESRULE_RULE_ID` FOREIGN KEY (`rule_id`) REFERENCES `salesrule` (`rule_id`); 105 | ALTER TABLE `salesrule_customer` 106 | DROP FOREIGN KEY `SALESRULE_CUSTOMER_RULE_ID_SEQUENCE_SALESRULE_SEQUENCE_VALUE`, 107 | ADD CONSTRAINT `SALESRULE_CUSTOMER_RULE_ID_SALESRULE_RULE_ID` FOREIGN KEY (`rule_id`) REFERENCES `salesrule` (`rule_id`); 108 | ALTER TABLE `salesrule_label` 109 | ADD CONSTRAINT `SALESRULE_LABEL_RULE_ID_SALESRULE_RULE_ID` FOREIGN KEY (`rule_id`) REFERENCES `salesrule` (`rule_id`); 110 | 111 | DROP TABLE `sequence_salesrule`; 112 | -------------------------------------------------------------------------------- /scripts/wishlist.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE `wishlist` 2 | DROP COLUMN `name`, 3 | DROP COLUMN `visibility`, 4 | DROP INDEX WISHLIST_CUSTOMER_ID, 5 | ADD CONSTRAINT `WISHLIST_CUSTOMER_ID` UNIQUE KEY (`customer_id`); 6 | --------------------------------------------------------------------------------