Апгрейд Magento c v. 1.1.8 до v.1.2.1, решение проблем. (How to Update Magento to v.1.2.1)

Сначала проапгрейдите файлы Magento. (Update Magento files and get error:)(Я делал его автоматом через скрипт Installotron своего хостера SimpleHelix. https://www.simplehelix.com/hosting/aff.php?aff=124), кому интересно).

Правка файлов / Editing files

Сделав это, получите во фронтенде вместо любимого сайта гнусную ошибку, типа:(

  1. Error in file: "/home/dparcs/public_html/arcs/app/code/core/Mage/CatalogInventory/sql/cataloginventory_setup/mysql4-upgrade-0.7.4-0.7.5.php" - SQLSTATE...

Не спешите бить кулаком по монитору / впадать в депрессуху / уходить в запой, просто сделайте следующее:

—1) Удалите это (запятую тоже)(Remove this, with comma):

  1. ,
  2.   CONSTRAINT `FK_CATALOGINVENTORY_STOCK_STATUS_STOCK` FOREIGN KEY (`stock_id`) REFERENCES `{$installer->getTable('cataloginventory_stock')}` (`stock_id`) ON DELETE CASCADE ON UPDATE CASCADE,
  3.   CONSTRAINT `FK_CATALOGINVENTORY_STOCK_STATUS_PRODUCT` FOREIGN KEY (`product_id`) REFERENCES `{$installer->getTable('catalog_product_entity')}` (`entity_id`) ON DELETE CASCADE ON UPDATE CASCADE,
  4.   CONSTRAINT `FK_CATALOGINVENTORY_STOCK_STATUS_WEBSITE` FOREIGN KEY (`website_id`) REFERENCES `{$installer->getTable('core_website')}` (`website_id`) ON DELETE CASCADE ON UPDATE CASCADE

из файла (from file): .../app/code/core/Mage/CatalogInventory/sql/cataloginventory_setup/mysql4-upgrade-0.7.4-0.7.5.php

и добавьте в него строку (add there this line):

  1. DROP TABLE IF EXISTS `{$this->getTable('cataloginventory_stock_status')}`;

перед строкой (before line):

  1. CREATE TABLE `{$installer->getTable('cataloginventory_stock_status')}` (

— 2) Далее, добавьте в файл (Add to file): .../app/design/adminhtml/default/default/template/page/head.phtml строку (this line):

  1. var FORM_KEY = '<?php echo $this->getFormKey() ?>';

после строки (after line)

  1. var SKIN_URL = '<?php echo $this->getSkinUrl() ?>';

(Иначе увидите ошибку «error”:true,”error_msg”:”Invalid Form Key”» при попытке поставить в админке число просматриваемых товаров на странице более 20)

Почистите кэш (clean cache), и вы увидите наконец вашу главную страницу.

Не расслабляйтесь и:

Проверьте ваши изображения / Check your logo and other pic.

У меня после апдейта логотип, фавикон и другие (например русифицированные мною кнопки типа «Proceed to Checkout») были заменены демо-дефолтными, появились снятые демо-банеры на главной.

Однако, не спешите радоваться и попробуйте “Поиск”. Работать он не будет, либо вы получите:

  1. SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`ndru_iMIcgmagent/imic_catalogsearch_result`, CONSTRAINT `FK_CATALOGSEARCH_RESULT_QUERY` FOREIGN KEY (`query_id`) REFERENCES `imic_catalogsearch_query` (`query_id`) ON DELETE CASCADE ON UPDATE)
  2. Trace:
  3. #0 /home/ndru/domains/nadopodarok.ru/public_html/lib/Zend/Db/Statement.php(283): Zend_Db_Statement_Pdo->_execute(Array)....

Самое время, помянув мать разработчиков Magento, перейти ко второй части Марлезонского балета:

Правка базы / DB Editing

Трабл в том, что новая версия использует какую-то новую фичу MySQL. И все таблицы вашей БД за исключением следующих:

  1. catalogsearch_fulltext
  2. log_customer     
  3. log_quote
  4. log_summary
  5. log_summary_type
  6. log_url
  7. log_url_info
  8. log_visitor
  9. log_visitor_info
  10. oscommerce_orders
  11. oscommerce_orders_products
  12. oscommerce_orders_status_history
  13. oscommerce_orders_total
  14. paygate_authorizenet_debug
  15. paypal_api_debug
  16. product_alert_stock
  17. sendfriend_log

надо перевести из типа MyISAM в тип InnoDB.

—3) Запускаете PhpMyAdmin, кликаете таб «SQL» и скидываете в форму ввода такую простыню (Run these sql commands):

  1. ALTER TABLE `adminnotification_inbox` ENGINE=INNODB;
  2. ALTER TABLE `admin_assert` ENGINE=INNODB;
  3. ALTER TABLE `admin_role` ENGINE=INNODB;
  4. ALTER TABLE `admin_rule` ENGINE=INNODB;
  5. ALTER TABLE `admin_user` ENGINE=INNODB;
  6. ALTER TABLE `api_assert` ENGINE=INNODB;
  7. ALTER TABLE `api_role` ENGINE=INNODB;
  8. ALTER TABLE `api_rule` ENGINE=INNODB;
  9. ALTER TABLE `api_user` ENGINE=INNODB;
  10. ALTER TABLE `catalogindex_eav` ENGINE=INNODB;
  11. ALTER TABLE `catalogindex_minimal_price` ENGINE=INNODB;
  12. ALTER TABLE `catalogindex_price` ENGINE=INNODB;
  13. ALTER TABLE `cataloginventory_stock` ENGINE=INNODB;
  14. ALTER TABLE `cataloginventory_stock_item` ENGINE=INNODB;
  15. ALTER TABLE `catalogrule` ENGINE=INNODB;
  16. ALTER TABLE `catalogrule_product` ENGINE=INNODB;
  17. ALTER TABLE `catalogrule_product_price` ENGINE=INNODB;
  18. ALTER TABLE `catalogsearch_query` ENGINE=INNODB;
  19. ALTER TABLE `catalog_category_entity` ENGINE=INNODB;
  20. ALTER TABLE `catalog_category_entity_datetime` ENGINE=INNODB;
  21. ALTER TABLE `catalog_category_entity_decimal` ENGINE=INNODB;
  22. ALTER TABLE `catalog_category_entity_int` ENGINE=INNODB;
  23. ALTER TABLE `catalog_category_entity_text` ENGINE=INNODB;
  24. ALTER TABLE `catalog_category_entity_varchar` ENGINE=INNODB;
  25. ALTER TABLE `catalog_category_product` ENGINE=INNODB;
  26. ALTER TABLE `catalog_category_product_index` ENGINE=INNODB;
  27. ALTER TABLE `catalog_compare_item` ENGINE=INNODB;
  28. ALTER TABLE `catalog_product_bundle_option` ENGINE=INNODB;
  29. ALTER TABLE `catalog_product_bundle_option_value` ENGINE=INNODB;
  30. ALTER TABLE `catalog_product_bundle_selection` ENGINE=INNODB;
  31. ALTER TABLE `catalog_product_enabled_index` ENGINE=INNODB;
  32. ALTER TABLE `catalog_product_entity` ENGINE=INNODB;
  33. ALTER TABLE `catalog_product_entity_datetime` ENGINE=INNODB;
  34. ALTER TABLE `catalog_product_entity_decimal` ENGINE=INNODB;
  35. ALTER TABLE `catalog_product_entity_gallery` ENGINE=INNODB;
  36. ALTER TABLE `catalog_product_entity_int` ENGINE=INNODB;
  37. ALTER TABLE `catalog_product_entity_media_gallery` ENGINE=INNODB;
  38. ALTER TABLE `catalog_product_entity_media_gallery_value` ENGINE=INNODB;
  39. ALTER TABLE `catalog_product_entity_text` ENGINE=INNODB;
  40. ALTER TABLE `catalog_product_entity_tier_price` ENGINE=INNODB;
  41. ALTER TABLE `catalog_product_entity_varchar` ENGINE=INNODB;
  42. ALTER TABLE `catalog_product_link` ENGINE=INNODB;
  43. ALTER TABLE `catalog_product_link_attribute` ENGINE=INNODB;
  44. ALTER TABLE `catalog_product_link_attribute_decimal` ENGINE=INNODB;
  45. ALTER TABLE `catalog_product_link_attribute_int` ENGINE=INNODB;
  46. ALTER TABLE `catalog_product_link_attribute_varchar` ENGINE=INNODB;
  47. ALTER TABLE `catalog_product_link_type` ENGINE=INNODB;
  48. ALTER TABLE `catalog_product_option` ENGINE=INNODB;
  49. ALTER TABLE `catalog_product_option_price` ENGINE=INNODB;
  50. ALTER TABLE `catalog_product_option_title` ENGINE=INNODB;
  51. ALTER TABLE `catalog_product_option_type_price` ENGINE=INNODB;
  52. ALTER TABLE `catalog_product_option_type_title` ENGINE=INNODB;
  53. ALTER TABLE `catalog_product_option_type_value` ENGINE=INNODB;
  54. ALTER TABLE `catalog_product_super_attribute` ENGINE=INNODB;
  55. ALTER TABLE `catalog_product_super_attribute_label` ENGINE=INNODB;
  56. ALTER TABLE `catalog_product_super_attribute_pricing` ENGINE=INNODB;
  57. ALTER TABLE `catalog_product_super_link` ENGINE=INNODB;
  58. ALTER TABLE `catalog_product_website` ENGINE=INNODB;
  59. ALTER TABLE `checkout_agreement` ENGINE=INNODB;
  60. ALTER TABLE `checkout_agreement_store` ENGINE=INNODB;
  61. ALTER TABLE `cms_block` ENGINE=INNODB;
  62. ALTER TABLE `cms_block_store` ENGINE=INNODB;
  63. ALTER TABLE `cms_page` ENGINE=INNODB;
  64. ALTER TABLE `cms_page_store` ENGINE=INNODB;
  65. ALTER TABLE `core_config_data` ENGINE=INNODB;
  66. ALTER TABLE `core_email_template` ENGINE=INNODB;
  67. ALTER TABLE `core_layout_link` ENGINE=INNODB;
  68. ALTER TABLE `core_layout_update` ENGINE=INNODB;
  69. ALTER TABLE `core_resource` ENGINE=INNODB;
  70. ALTER TABLE `core_session` ENGINE=INNODB;
  71. ALTER TABLE `core_store` ENGINE=INNODB;
  72. ALTER TABLE `core_store_group` ENGINE=INNODB;
  73. ALTER TABLE `core_translate` ENGINE=INNODB;
  74. ALTER TABLE `core_url_rewrite` ENGINE=INNODB;
  75. ALTER TABLE `core_website` ENGINE=INNODB;
  76. ALTER TABLE `cron_schedule` ENGINE=INNODB;
  77. ALTER TABLE `customer_address_entity` ENGINE=INNODB;
  78. ALTER TABLE `customer_address_entity_datetime` ENGINE=INNODB;
  79. ALTER TABLE `customer_address_entity_decimal` ENGINE=INNODB;
  80. ALTER TABLE `customer_address_entity_int` ENGINE=INNODB;
  81. ALTER TABLE `customer_address_entity_text` ENGINE=INNODB;
  82. ALTER TABLE `customer_address_entity_varchar` ENGINE=INNODB;
  83. ALTER TABLE `customer_entity` ENGINE=INNODB;
  84. ALTER TABLE `customer_entity_datetime` ENGINE=INNODB;
  85. ALTER TABLE `customer_entity_decimal` ENGINE=INNODB;
  86. ALTER TABLE `customer_entity_int` ENGINE=INNODB;
  87. ALTER TABLE `customer_entity_text` ENGINE=INNODB;
  88. ALTER TABLE `customer_entity_varchar` ENGINE=INNODB;
  89. ALTER TABLE `customer_group` ENGINE=INNODB;
  90. ALTER TABLE `dataflow_batch` ENGINE=INNODB;
  91. ALTER TABLE `dataflow_batch_export` ENGINE=INNODB;
  92. ALTER TABLE `dataflow_batch_import` ENGINE=INNODB;
  93. ALTER TABLE `dataflow_import_data` ENGINE=INNODB;
  94. ALTER TABLE `dataflow_profile` ENGINE=INNODB;
  95. ALTER TABLE `dataflow_profile_history` ENGINE=INNODB;
  96. ALTER TABLE `dataflow_session` ENGINE=INNODB;
  97. ALTER TABLE `design_change` ENGINE=INNODB;
  98. ALTER TABLE `directory_country` ENGINE=INNODB;
  99. ALTER TABLE `directory_country_format` ENGINE=INNODB;
  100. ALTER TABLE `directory_country_region` ENGINE=INNODB;
  101. ALTER TABLE `directory_country_region_name` ENGINE=INNODB;
  102. ALTER TABLE `directory_currency_rate` ENGINE=INNODB;
  103. ALTER TABLE `eav_attribute` ENGINE=INNODB;
  104. ALTER TABLE `eav_attribute_group` ENGINE=INNODB;
  105. ALTER TABLE `eav_attribute_option` ENGINE=INNODB;
  106. ALTER TABLE `eav_attribute_option_value` ENGINE=INNODB;
  107. ALTER TABLE `eav_attribute_set` ENGINE=INNODB;
  108. ALTER TABLE `eav_entity` ENGINE=INNODB;
  109. ALTER TABLE `eav_entity_attribute` ENGINE=INNODB;
  110. ALTER TABLE `eav_entity_datetime` ENGINE=INNODB;
  111. ALTER TABLE `eav_entity_decimal` ENGINE=INNODB;
  112. ALTER TABLE `eav_entity_int` ENGINE=INNODB;
  113. ALTER TABLE `eav_entity_store` ENGINE=INNODB;
  114. ALTER TABLE `eav_entity_text` ENGINE=INNODB;
  115. ALTER TABLE `eav_entity_type` ENGINE=INNODB;
  116. ALTER TABLE `eav_entity_varchar` ENGINE=INNODB;
  117. ALTER TABLE `gift_message` ENGINE=INNODB;
  118. ALTER TABLE `newsletter_problem` ENGINE=INNODB;
  119. ALTER TABLE `newsletter_queue` ENGINE=INNODB;
  120. ALTER TABLE `newsletter_queue_link` ENGINE=INNODB;
  121. ALTER TABLE `newsletter_queue_store_link` ENGINE=INNODB;
  122. ALTER TABLE `newsletter_subscriber` ENGINE=INNODB;
  123. ALTER TABLE `newsletter_template` ENGINE=INNODB;
  124. ALTER TABLE `paypaluk_api_debug` ENGINE=INNODB;
  125. ALTER TABLE `poll` ENGINE=INNODB;
  126. ALTER TABLE `poll_answer` ENGINE=INNODB;
  127. ALTER TABLE `poll_store` ENGINE=INNODB;
  128. ALTER TABLE `poll_vote` ENGINE=INNODB;
  129. ALTER TABLE `product_alert_price` ENGINE=INNODB;
  130. ALTER TABLE `rating` ENGINE=INNODB;
  131. ALTER TABLE `rating_entity` ENGINE=INNODB;
  132. ALTER TABLE `rating_option` ENGINE=INNODB;
  133. ALTER TABLE `rating_option_vote` ENGINE=INNODB;
  134. ALTER TABLE `rating_option_vote_aggregated` ENGINE=INNODB;
  135. ALTER TABLE `rating_store` ENGINE=INNODB;
  136. ALTER TABLE `rating_title` ENGINE=INNODB;
  137. ALTER TABLE `report_event` ENGINE=INNODB;
  138. ALTER TABLE `report_event_types` ENGINE=INNODB;
  139. ALTER TABLE `review` ENGINE=INNODB;
  140. ALTER TABLE `review_detail` ENGINE=INNODB;
  141. ALTER TABLE `review_entity` ENGINE=INNODB;
  142. ALTER TABLE `review_entity_summary` ENGINE=INNODB;
  143. ALTER TABLE `review_status` ENGINE=INNODB;
  144. ALTER TABLE `review_store` ENGINE=INNODB;
  145. ALTER TABLE `salesrule` ENGINE=INNODB;
  146. ALTER TABLE `salesrule_customer` ENGINE=INNODB;
  147. ALTER TABLE `sales_flat_order_item` ENGINE=INNODB;
  148. ALTER TABLE `sales_flat_quote` ENGINE=INNODB;
  149. ALTER TABLE `sales_flat_quote_address` ENGINE=INNODB;
  150. ALTER TABLE `sales_flat_quote_address_item` ENGINE=INNODB;
  151. ALTER TABLE `sales_flat_quote_item` ENGINE=INNODB;
  152. ALTER TABLE `sales_flat_quote_item_option` ENGINE=INNODB;
  153. ALTER TABLE `sales_flat_quote_payment` ENGINE=INNODB;
  154. ALTER TABLE `sales_flat_quote_shipping_rate` ENGINE=INNODB;
  155. ALTER TABLE `sales_order` ENGINE=INNODB;
  156. ALTER TABLE `sales_order_datetime` ENGINE=INNODB;
  157. ALTER TABLE `sales_order_decimal` ENGINE=INNODB;
  158. ALTER TABLE `sales_order_entity` ENGINE=INNODB;
  159. ALTER TABLE `sales_order_entity_datetime` ENGINE=INNODB;
  160. ALTER TABLE `sales_order_entity_decimal` ENGINE=INNODB;
  161. ALTER TABLE `sales_order_entity_int` ENGINE=INNODB;
  162. ALTER TABLE `sales_order_entity_text` ENGINE=INNODB;
  163. ALTER TABLE `sales_order_entity_varchar` ENGINE=INNODB;
  164. ALTER TABLE `sales_order_int` ENGINE=INNODB;
  165. ALTER TABLE `sales_order_tax` ENGINE=INNODB;
  166. ALTER TABLE `sales_order_text` ENGINE=INNODB;
  167. ALTER TABLE `sales_order_varchar` ENGINE=INNODB;
  168. ALTER TABLE `shipping_tablerate` ENGINE=INNODB;
  169. ALTER TABLE `sitemap` ENGINE=INNODB;
  170. ALTER TABLE `tag` ENGINE=INNODB;
  171. ALTER TABLE `tag_relation` ENGINE=INNODB;
  172. ALTER TABLE `tag_summary` ENGINE=INNODB;
  173. ALTER TABLE `tax_calculation` ENGINE=INNODB;
  174. ALTER TABLE `tax_calculation_rate` ENGINE=INNODB;
  175. ALTER TABLE `tax_calculation_rate_title` ENGINE=INNODB;
  176. ALTER TABLE `tax_calculation_rule` ENGINE=INNODB;
  177. ALTER TABLE `tax_class` ENGINE=INNODB;
  178. ALTER TABLE `wishlist` ENGINE=INNODB;
  179. ALTER TABLE `wishlist_item` ENGINE=INNODB;
  180. ALTER TABLE `catalogrule_affected_product` ENGINE=INNODB;
  181. ALTER TABLE `core_flag` ENGINE=INNODB;
  182. ALTER TABLE `googlebase_attributes` ENGINE=INNODB;
  183. ALTER TABLE `googlebase_items` ENGINE=INNODB;
  184. ALTER TABLE `googlebase_types` ENGINE=INNODB;
  185. ALTER TABLE `googlecheckout_api_debug` ENGINE=INNODB;
  186. ALTER TABLE `googleoptimizer_code` ENGINE=INNODB;

Если в ответ получаете ошибку (нет такой таблицы), то исключаете соответствующую строку из простыни и опять жмете «Ок». (Remove lines with errors and repeat).

Очищаем логи

— 4) Если ошибка осталась, в PhpMyAdmin ставим галки на всех таблицах, начинающихся с «log_», кроме «log_summary» и внизу выбираем из dropdown-меню «Очистить». (Clean «log_*» tables excluding «log_summary»)

— 5) Не помогло? Попробуйте выполнить в PHPMyAdmin SQL-команду (Run sql command):

  1. SET FOREIGN_KEY_CHECKS = 0;

— 6) Очищаете кэш (rm -rf var/cache/* var/session/*, через ssh)

 И со спокойной душой идёте пить пиво :)

Источники




 

Magento 2 GitHub Repository

Magento Job Board - Some sort of tag line goes here

Latest Posts| View all Jobs