How did I upgrade blushme.se from Magento 2.2.6 to 2.3.4?

Step 1

bin/magento maintenance:enable

Step 2

DELETE FROM wishlist WHERE 0 = customer_id;

It fixes the issue:
«Duplicate entry ‘0’ for key ‘WISHLIST_CUSTOMER_ID’, query was: ALTER TABLE wishlist ADD CONSTRAINT WISHLIST_CUSTOMER_ID_CUSTOMER_ENTITY_ENTITY_ID FOREIGN KEY (customer_id) REFERENCES customer_entity (entity_id) ON DELETE CASCADE, ADD CONSTRAINT WISHLIST_CUSTOMER_ID UNIQUE KEY (customer_id) ».

Step 3

rm -rf app/code/Mageplaza/Core 
rm -rf app/code/Mageplaza/Smtp

These modules will be installed via Composer.

Step 4

I replaced the the root’s composer.json file with the file from Magento 2.3.4.
Then I declared already installed third-party packages in the require section of the file:

"require": {
	"klarna/checkout": "^4.0",
	"magento/product-community-edition": "2.3.4",
	"mageplaza/module-core": "1.4.1",
	"mageplaza/module-smtp": "*",
	"mirasvit/module-search-elastic-ultimate": "*"
}

Step 5

rm -rf composer.lock
composer update

Step 6

redis-cli flushall

It solves the issue: «Unable to unserialize value. Error: Syntax error».
magento.stackexchange.com/a/196825

Step 7

bin/magento setup:upgrade
bin/magento cache:enable

Step 8

I disabled the preinstalled Magento’s crapware.

Step 9

I removed the disabled Codazon_AjaxLayeredNav module:

rm -rf app/code/Codazon/AjaxLayeredNav

Step 10

I adapted the installed third-party modules to PHP 7.3.
It fixed errors:

  • «Declaration of Codazon\ProductFilter\Block\ImageBuilder::create() should be compatible with Magento\Catalog\Block\Product\ImageBuilder::create()»
  • «Declaration of Seavus\Categories\Index\Magento\Catalog\Product::mapProduct() should be compatible with Mirasvit\SearchAutocomplete\Index\Magento\Catalog\Product::mapProduct()»
  • «Declaration of Seavus\Categories\Model\ResourceModel\Product\Collection::_getSelectCountSql($select = NULL, $resetLeftJoins = true) should be compatible with Magento\Catalog\Model\ResourceModel\Product\Collection::_getSelectCountSql(?Magento\Framework\DB\Select $select = NULL, $resetLeftJoins = true)»
  • Codazon_ProductLabel: «Class Magento\Email\Model\Source\Variables does not exist»
  • «Mageplaza\SeoUrl\App\Request\PathInfoProcessor: Incompatible argument type: Required type: \Magento\Store\App\Request\StorePathInfoValidator. Actual type: \Magento\Store\Model\StoreManagerInterface»
  • The «Mgt-Commerce.com» logo is missing in the Magento 2.3.4 backend
  • «Declaration of Mageplaza\SeoUrl\App\Request\PathInfoProcessor::process() must be compatible with Magento\Store\App\Request\PathInfoProcessor::process()»
  • «“continue” targeting switch is equivalent to “break”. Did you mean to use “continue 2”?» in app/code/Codazon/ThemeOptions/Setup/Model/Widget.php on line 291
  • «count(): Parameter must be an array or an object that implements Countable in app/code/Codazon/MegaMenu/Block/Widget/Megamenu.php on line 55»

Step 11

I removed an empty Less file:

rm -f app/code/Magefan/Blog/view/frontend/web/css/blog-l.css

It fixed the error: «Compilation from source: LESS file is empty: frontend/Magento/blank/en_US/Magefan_Blog/css/blog-l.less».

Step 12

I disabled spam from Mageplaza:

bin/magento config:set mageplaza/general/notice_enable 0
bin/magento cache:clean

Step 13

rm -rf generated/*
bin/magento setup:di:compile

Step 14

rm -rf pub/static/*
bin/magento setup:static-content:deploy \
	--area adminhtml \
	--theme Magento/backend \
	-f en_US sv_SE fi_FI
bin/magento setup:static-content:deploy \
	--area frontend \
	--theme Codazon/fastest_seavus \
	-f en_US sv_SE fi_FI

Step 15

bin/magento maintenance:disable

Step 16

bin/magento config:set catalog/search/min_query_length 1
bin/magento cache:clean

It fixed the error with Mageplaza_LayeredNavigation: «Sorry, something went wrong. You can find out more in the error log.» / «The request query and filters aren’t set. Verify the query and filters and try again.».

Step 17

I have adjusted the etc/view.xml file of the used design theme to fix product images appearance:

<image id='category_page_grid_hover' type='thumbnail'>
	<width>300</width>
	<height>300</height>
	<aspect_ratio>true</aspect_ratio>
	<frame>true</frame>
</image>
1 Like

That’s cool, but it you post your blogs on Youtube, you’ll get more interactions.

Good job!

Does Redis cache static pages as well as Db?