ACSD-60989: la modifica di una colonna con una chiave esterna tramite uno schema dichiarativo causa errori in MariaDB
La patch ACSD-60989 risolve il problema se la modifica di una colonna con una chiave esterna tramite uno schema dichiarativo in MariaDB causa errori di aggiornamento dell’installazione a causa di vincoli di chiave esterna. Questa patch è disponibile quando è installato Quality Patches Tool (QPT) 1.1.78. L’ID della patch è ACSD-60989. Questo problema è stato risolto in Adobe Commerce 2.4.8.
Prodotti e versioni interessati
La patch è stata creata per la versione di Adobe Commerce:
- Adobe Commerce (tutti i metodi di implementazione) 2.4.6-p6
Compatibile con le versioni di Adobe Commerce:
- Adobe Commerce (tutti i metodi di implementazione) >=2.4.4 <2.4.8
magento/quality-patches alla versione più recente e verificare la compatibilità nella pagina Quality Patches Tool: Cerca patch. Utilizza l’ID patch come parola chiave di ricerca per individuare la patch.Problema
La modifica di una colonna con una chiave esterna tramite schema dichiarativo in MariaDB non riesce a causa di errori di vincolo della chiave esterna durante l’aggiornamento dell’installazione.
Passaggi da riprodurre:
-
Vai a Admin > Stores > Settings > Order Status.
-
Fai clic su Create New Status, immetti test in tutti i campi e salva.
-
Fare clic su Assign Status to State.
- Imposta Order Status su test.
- Imposta Order State su Ricevuto.
- Salvare l’assegnazione.
-
Creare, registrare e abilitare un modulo personalizzato e aggiungere quanto segue a
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> -
Esegui il comando seguente:
code language-none bin/magento setup:upgrade
Risultati previsti:
L’aggiornamento dell’installazione viene completato senza errori di vincolo della chiave esterna.
Risultati effettivi:
Errore durante l’aggiornamento dell’installazione:
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'
Applicare la patch
Per applicare singole patch, utilizzare i collegamenti seguenti, a seconda del metodo di distribuzione utilizzato:
- Adobe Commerce o Magento Open Source on-premise: Quality Patches Tool > Utilizzo nella guida di Quality Patches Tool.
- Adobe Commerce su infrastruttura cloud: Aggiornamenti e patch > Applica patch nella guida Commerce su infrastruttura cloud.
Lettura correlata
Per ulteriori informazioni su Quality Patches Tool, vedere:
- Quality Patches Tool: strumento self-service per patch di qualità nella guida degli strumenti.