ACSD-60989: Als u een kolom wijzigt met een externe sleutel via een declaratief schema, treden fouten op MariaDB

De ACSD-60989-patch verhelpt het probleem dat het wijzigen van een kolom met een externe sleutel via een declaratief schema op MariaDB fouten veroorzaakt bij het upgraden van de setup vanwege externe toetsbeperkingen. Deze patch is beschikbaar wanneer Quality Patches Tool (QPT) 1.1.78 wordt geïnstalleerd. De patch-id is ACSD-60989. Dit probleem is opgelost in Adobe Commerce 2.4.8.

Betrokken producten en versies

het flard wordt gecreeerd voor de versie van Adobe Commerce:

  • Adobe Commerce (alle implementatiemethoden) 2.4.6-p6

Compatibel met de versies van Adobe Commerce:

  • Adobe Commerce (alle implementatiemethoden) >=2.4.4 <2.4.8
NOTE
De patch kan van toepassing worden op andere versies met nieuwe Quality Patches Tool versies. Als u wilt controleren of de patch compatibel is met uw Adobe Commerce-versie, werkt u het magento/quality-patches -pakket bij naar de meest recente versie en controleert u de compatibiliteit op de Quality Patches Tool : Zoek naar de pagina van flarden ​. Gebruik de patch-id als een zoekwoord om de patch te zoeken.

Probleem

Het wijzigen van een kolom met een externe sleutel via declaratief schema op MariaDB mislukt als gevolg van fouten met een externe-sleutelbeperking tijdens de installatie-upgrade.

Stappen om te reproduceren:

  1. Ga naar Admin > Stores > Settings > Order Status .

  2. Klik Create New Status, ga test op alle gebieden in, en bewaar.

  3. Klik op Assign Status to State .

    1. Plaats Order Status aan test.
    2. Plaats Order State aan Ontvangen.
    3. Sla de toewijzing op.
  4. Maak, registreer en schakel een aangepaste module in en voeg het volgende toe aan db_schema.xml :

    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. Voer de volgende opdracht uit:

    code language-none
    bin/magento setup:upgrade
    

Verwachte resultaten :

De setup-upgrade wordt voltooid zonder fouten met betrekking tot externe toetsrestricties.

Ware resultaten :

Er treedt een fout op tijdens de installatie-upgrade:

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'

De patch toepassen

Om individuele flarden toe te passen, gebruik de volgende verbindingen afhankelijk van uw plaatsingsmethode:

Gerelateerde lezing

Meer informatie over Quality Patches Tool vindt u in:

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