SHOW TABLE STATUS Patch - Magento 2

So installieren Sie unseren isTableExists() Patch für MySQL

INFO: Der untenstehende Patch ist seit der Version Magento 2.4.2 bereits enthalten.

Falls Sie einen Onlineshop mit einer früheren Version von Magento betreiben, gibt es mehrere Methoden, um unseren Performance-Patch für MySQL zu installieren. Für eine sichere Installation des Updates empfehlen wir die Installation über Composer.

Composer Methode

Für die Installation über Composer muss die Datei composer-fasterisTableExists.diff.gz heruntergeladen und innerhalb des Magento-Stammverzeichnisses in den Ordner patches/composer entpackt werden. Falls dieser Ordner bisher nicht existiert, legen Sie ihn bitte vorher an.

Möglich ist dies per SSH mit den folgenden Befehlen:

cd <MagentoStammverzeichnis>

mkdir -p patches/composer

curl https://maxcluster.de/knowledge-base/downloads/fasteristableexists/composer-fasterisTableExists.diff.gz > patches/composer/fasterisTableExists.diff.gz

gunzip patches/composer/fasterisTableExists.diff.gz


Damit Patches über Composer installiert werden können, benötigen Sie das Tool cweagans/composer-patches, das mit folgendem Befehl installiert werden kann:

composer require cweagans/composer-patches


Im nächsten Schritt erweitern Sie die Extra-Sektion der composer.json, um den Patch zu installieren. Hierfür fügen Sie bitte Folgendes ein:

...

    'extra': {

...

         'composer-exit-on-patch-failure': true,

         'patches': {

           'magento/framework': {

             'fasterisTableExists': 'patches/composer/fasterisTableExists.diff'

           }

         }

    }


Falls Sie eine Build Pipeline verwenden, oder die composer.json in einem externen Repository verwalten, stellen Sie bitte sicher, dass die composer.json auch jeweils dort angepasst wird, damit der Patch auch bei zukünftigen Deployments angewandt wird.

Der Patch kann nun mit folgendem Befehl installiert werden:

composer -v install


Die Ausgabe sollte dabei bestätigen, dass die Datei vendor/magento/framework/DB/Adapter/Pdo/Mysql.php angepasst wurde.

Die Ausgabe sieht für gewöhnlich so aus:

Gathering patches for root package.

Removing package magento/framework so that it can be re-installed and re-patched.

  - Removing magento/framework (102.0.5)

Loading composer repositories with package information

Installing dependencies (including require-dev) from lock file

Warning: The lock file is not up to date with the latest changes in composer.json. You may be getting outdated dependencies.

It is recommended that you run `composer update` or `composer update <package name>`.

Dependency resolution completed in 0.026 seconds

Analyzed 1049 packages to resolve dependencies

Analyzed 6937 rules to resolve dependencies

Package operations: 1 install, 0 updates, 0 removals

Installs: magento/framework:102.0.5

Gathering patches for root package.

Gathering patches for dependencies. This might take a minute.

Found 1 patches for magento/framework.

  - Installing magento/framework (102.0.5): Loading from cache

 Extracting archive  - Applying patches for magento/framework

    patches/composer/fasterisTableExists.diff (fasterisTableExists)

patch '-p1' --no-backup-if-mismatch -d '/var/www/share/magento2-demoshop-maxcluster.de/2.3.5-p1/vendor/magento/framework' < '/var/www/share/magento2-demoshop-maxcluster.de/2.3.5-p1/patches/composer/fasterisTableExists.diff'

can't find file to patch at input line 3

Perhaps you used the wrong -p or --strip option?

The text leading up to this was:

--------------------------

|--- DB/Adapter/Pdo/Mysql.php   2020-06-04 17:19:28.439003997 +0200

|+++ DB/Adapter/Pdo/Mysql.php   2020-06-04 17:19:45.295945396 +0200

--------------------------

File to patch: 

Skip this patch? [y] 

Skipping patch.

3 out of 3 hunks ignored


patch '-p0' --no-backup-if-mismatch -d '/var/www/share/magento2-demoshop-maxcluster.de/2.3.5-p1/vendor/magento/framework' < '/var/www/share/magento2-demoshop-maxcluster.de/2.3.5-p1/patches/composer/fasterisTableExists.diff'

patching file DB/Adapter/Pdo/Mysql.php


Package container-interop/container-interop is abandoned, you should avoid using it. Use psr/container instead.

Package phpunit/phpunit-mock-objects is abandoned, you should avoid using it. No replacement was suggested.

Generating autoload files

35 packages you are using are looking for funding.

Use the `composer fund` command to find out more!

Running PHPCodeSniffer Composer Installer

PHP CodeSniffer Config installed_paths set to ../../magento/magento-coding-standard,../../phpcompatibility/php-compatibility,../../codeception

Using config file: /var/www/share/magento2-demoshop-maxcluster.de/2.3.5-p1/vendor/squizlabs/php_codesniffer/CodeSniffer.conf


Config value 'installed_paths' updated successfully; old value was '../../codeception,../../magento/magento-coding-standard,../../phpcompatibility/php-compatibility'


Hinweis: Die Meldung 'can't find file to patch at input line 3' ist hierbei normal und verhindert nicht die korrekte Installation des Patches.

Abschließend muss noch die composer.lock-Datei aktualisiert werden, was mit folgendem Befehl möglich ist:

composer update --lock


Beachten Sie bitte, dass auch diese Datei bei Bedarf in die Versionsverwaltung übernommen werden muss.

Bitte denken Sie auch daran, den Patch bei einem Update auf Magento 2.4.2 wieder aus der composer.json zu entfernen.

Patch Methode

Alternativ zu der Methode über Composer ist es auch möglich, den Patch direkt zu installieren.

Hierzu kann der Patch aus dem Magento-Stammverzeichnis mit folgendem Befehl heruntergeladen werden:

wget https://maxcluster.de/knowledge-base/downloads/fasteristableexists/fasterisTableExists.diff.gz

gunzip fasterisTableExists.diff.gz


Anschließend wird er mit diesem Befehl installiert:

patch -p0 < fasterisTableExists.diff

Nach der Patch-Installation können Sie die Datei fasterisTableExists.diff wieder entfernen. Bitte beachten Sie, dass dieses Vorgehen nach jedem Magento-Update wiederholt werden muss.

Bei Fragen steht Ihnen unser Support telefonisch unter 05251/414130 oder per E-Mail an support@maxcluster.de zur Verfügung.

Veröffentlicht am 01.03.2024