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
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:
-
Gå till Admin > Stores > Settings > Order Status.
-
Klicka på Create New Status, ange test i alla fält och spara.
-
Klicka på Assign Status to State.
- Ange Order Status som test.
- Ange Order State som Mottagen.
- Spara uppdraget.
-
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> -
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:
- Adobe Commerce eller Magento Open Source lokalt: Quality Patches Tool > Användning i guiden Quality Patches Tool.
- Adobe Commerce om molninfrastruktur: Uppgraderingar och korrigeringar > Tillämpa korrigeringar i guiden för Commerce om molninfrastruktur.
Relaterad läsning
Mer information om Quality Patches Tool finns i:
- Quality Patches Tool: Ett självbetjäningsverktyg för korrigeringar av kvalitet i verktygshandboken.