ACSD-60989: Das Ändern einer Spalte mit einem Fremdschlüssel über ein deklaratives Schema verursacht Fehler bei MariaDB

Mit dem Patch ACSD-60989 wird das Problem behoben, dass das Ändern einer Spalte mit einem Fremdschlüssel über ein deklaratives Schema auf MariaDB Setup-Aktualisierungsfehler aufgrund von Fremdschlüsseleinschränkungen verursacht. Dieser Patch ist verfügbar, wenn Quality Patches Tool (QPT) 1.1.78 installiert ist. Die Patch-ID ist ACSD-60989. Beachten Sie, dass dieses Problem in Adobe Commerce 2.4.8 behoben wurde.

Betroffene Produkte und Versionen

Der Patch wird für die Adobe Commerce-Version erstellt:

  • Adobe Commerce (alle Bereitstellungsmethoden) 2.4.6-p6

Kompatibel mit Adobe Commerce-Versionen:

  • Adobe Commerce (alle Bereitstellungsmethoden) >=2.4.4 <2.4.8
NOTE
Der Patch könnte mit neuen Quality Patches Tool-Versionen auch für andere Versionen gelten. Um zu überprüfen, ob der Patch mit Ihrer Adobe Commerce-Version kompatibel ist, aktualisieren Sie das magento/quality-patches auf die neueste Version und überprüfen Sie die Kompatibilität auf der Seite Quality Patches Tool: Nach Patches suchen. Verwenden Sie die Patch-ID als Suchbegriff, um den Patch zu finden.

Problem

Das Ändern einer Spalte mit einem Fremdschlüssel über ein deklaratives Schema auf MariaDB schlägt aufgrund von Fehlern bei der Fremdschlüssel-Einschränkung während des Setup-Upgrades fehl.

Schritte zur Reproduktion:

  1. Navigieren Sie zu Admin > Stores > Settings > Order Status.

  2. Klicken Sie auf Create New Status, geben Sie Test in alle Felder ein und speichern Sie.

  3. Klicken Sie auf Assign Status to State.

    1. Setzen Sie Order Status auf test.
    2. Order State auf Received festgelegt.
    3. Speichern Sie die Zuweisung.
  4. Erstellen, registrieren und aktivieren Sie ein benutzerdefiniertes Modul und fügen Sie db_schema.xml Folgendes hinzu:

    code language-none
    <?xml version="1.0"?>
    <schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Setup/etc/db_schema.xsd">
        <table name="sales_order_status">
            <column xsi:type="varchar" name="status" nullable="false" length="64" comment="Order Status"/>
        </table>
        <table name="sales_order_status_state">
            <column xsi:type="varchar" name="status" nullable="false" length="64" comment="Order Status"/>
        </table>
        <table name="sales_order_status_label">
            <column xsi:type="varchar" name="status" nullable="false" length="64" comment="Order Status"/>
        </table>
    </schema>
    
  5. Führen Sie den folgenden Befehl aus:

    code language-none
    bin/magento setup:upgrade
    

Erwartete Ergebnisse:

Das Setup-Upgrade wird ohne Fremdschlüssel-Einschränkungsfehler erfolgreich abgeschlossen.

Tatsächliche Ergebnisse:

Während des Setup-Upgrades tritt ein Fehler auf:

Unable to apply patch Vendor\Sales\Setup\Patch\Schema\DataPatch for module Vendor_Sales.
Original exception message:
SQLSTATE[HY000]: General error: 1833 Cannot change column 'status': used in a foreign key constraint
'SALES_ORDER_STATUS_LABEL_STATUS_SALES_ORDER_STATUS_STATUS'
of table 'sales_order_status_label'

Patch anwenden

Verwenden Sie je nach Bereitstellungsmethode die folgenden Links, um einzelne Patches anzuwenden:

Verwandtes Lesen

Weitere Informationen zu Quality Patches Tool finden Sie unter:

recommendation-more-help
commerce-operations-help-tools