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
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:
-
Navigieren Sie zu Admin > Stores > Settings > Order Status.
-
Klicken Sie auf Create New Status, geben Sie Test in alle Felder ein und speichern Sie.
-
Klicken Sie auf Assign Status to State.
- Setzen Sie Order Status auf test.
- Order State auf Received festgelegt.
- Speichern Sie die Zuweisung.
-
Erstellen, registrieren und aktivieren Sie ein benutzerdefiniertes Modul und fügen Sie
db_schema.xmlFolgendes 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> -
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:
- Adobe Commerce oder Magento Open Source On-Premise: Quality Patches Tool > Nutzung im Quality Patches Tool.
- Adobe Commerce in Cloud-Infrastruktur: Upgrades und Patches > Patches anwenden im Handbuch zu Commerce in Cloud-Infrastruktur.
Verwandtes Lesen
Weitere Informationen zu Quality Patches Tool finden Sie unter:
- Quality Patches Tool: Ein Self-Service-Tool für hochwertige Patches im Tools-Handbuch.