ACSD-60989: Om du ändrar en kolumn med en sekundärnyckel via ett deklarativt schema uppstår fel på MariaDB

Korrigeringen ACSD-60989 åtgärdar ett problem där ändringar av en kolumn med en sekundärnyckel via ett deklarativt schema på MariaDB orsakar konfigurationsfel på grund av begränsningar i sekundärnyckeln. Den här korrigeringen är tillgänglig när Quality Patches Tool (QPT) 1.1.78 har installerats. Korrigerings-ID är ACSD-60989. Observera att detta problem har åtgärdats i Adobe Commerce 2.4.8.

Berörda produkter och versioner

Korrigeringen har skapats för Adobe Commerce-version:

  • Adobe Commerce (alla distributionsmetoder) 2.4.6-p6

Kompatibel med Adobe Commerce-versioner:

  • Adobe Commerce (all deployment methods) >=2.4.4 <2.4.8
NOTE
Korrigeringen kan bli tillämplig för andra versioner med nya Quality Patches Tool-versioner. Om du vill kontrollera om korrigeringen är kompatibel med din Adobe Commerce-version uppdaterar du paketet magento/quality-patches till den senaste versionen och kontrollerar kompatibiliteten för Quality Patches Tool: Sök efter sidan med korrigeringsfiler ​. Använd patch-ID:t som söknyckelord för att hitta patchen.

Problem

Det går inte att ändra en kolumn med en sekundärnyckel via ett deklarativt schema på MariaDB på grund av sekundärnyckelbegränsningsfel under installationen.

Steg som ska återskapas:

  1. Gå till Admin > Stores > Settings > Order Status.

  2. Klicka på Create New Status, ange test i alla fält och spara.

  3. Klicka på Assign Status to State.

    1. Ange Order Status som test.
    2. Ange Order State som Mottagen.
    3. Spara uppdraget.
  4. Skapa, registrera och aktivera en anpassad modul och lägg till följande i 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. Kör följande kommando:

    code language-none
    bin/magento setup:upgrade
    

Förväntade resultat:

Installationsuppgraderingen slutfördes utan fel för sekundärnyckelbegränsning.

Faktiska resultat:

Ett fel inträffar under installationen:

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'

Tillämpa korrigeringen

Använd följande länkar beroende på distributionsmetod för att tillämpa enskilda korrigeringsfiler:

Relaterad läsning

Mer information om Quality Patches Tool finns i:

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