ACSD-60989 : la modification d’une colonne avec une clé étrangère par le biais d’un schéma déclaratif entraîne des erreurs sur les MariaDB
Le correctif ACSD-60989 corrige le problème où la modification d’une colonne avec une clé étrangère via un schéma déclaratif sur MariaDB provoque des erreurs de mise à niveau de la configuration en raison de contraintes de clé étrangère. Ce correctif est disponible lorsque la version 1.1.78 de Quality Patches Tool (QPT) est installée. L’ID du correctif est ACSD-60989. Ce problème a été résolu dans Adobe Commerce 2.4.8.
Produits et versions concernés
Le correctif est créé pour la version Adobe Commerce :
- Adobe Commerce (toutes les méthodes de déploiement) 2.4.6-p6
Compatible avec les versions d’Adobe Commerce :
- Adobe Commerce (toutes les méthodes de déploiement) >=2.4.4 <2.4.8
magento/quality-patches vers la dernière version et vérifiez la compatibilité sur la page Quality Patches Tool : Rechercher des correctifs. Utilisez l’ID du correctif comme mot-clé de recherche pour localiser le correctif.Problème
La modification d’une colonne avec une clé étrangère via le schéma déclaratif sur MariaDB échoue en raison d’erreurs de contrainte de clé étrangère lors de la mise à niveau de la configuration.
Procédure à suivre :
-
Accédez à Admin > Stores > Settings > Order Status.
-
Cliquez sur Create New Status, saisissez test dans tous les champs, puis enregistrez.
-
Cliquez sur Assign Status to State.
- Définissez Order Status sur test.
- Définissez Order State sur Reçu.
- Enregistrez l’affectation.
-
Créez, enregistrez et activez un module personnalisé, puis ajoutez les éléments suivants à
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> -
Exécutez la commande suivante :
code language-none bin/magento setup:upgrade
Résultats attendus :
La mise à niveau de la configuration s’est terminée sans erreur de contrainte de clé étrangère.
Résultats réels :
Une erreur se produit lors de la mise à niveau de la configuration :
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'
Application du correctif
Pour appliquer des correctifs individuels, utilisez les liens suivants en fonction de votre méthode de déploiement :
- Adobe Commerce ou Magento Open Source On-premise : Quality Patches Tool > Utilisation dans le guide de Quality Patches Tool.
- Adobe Commerce sur les infrastructures cloud : Mises à niveau et correctifs > Appliquer des correctifs dans le guide Commerce sur les infrastructures cloud .
Lecture connexe
Pour en savoir plus sur Quality Patches Tool, consultez :
- Quality Patches Tool : un outil en libre-service pour les correctifs de qualité dans le guide Outils .