ACSD-60989: la modificación de una columna con una clave externa a través del esquema declarativo provoca errores en MariaDB

El parche ACSD-60989 corrige el problema en el que la modificación de una columna con una clave externa mediante un esquema declarativo en MariaDB provoca errores de actualización de la configuración debido a restricciones de clave externa. Esta revisión está disponible cuando está instalado Quality Patches Tool (QPT) 1.1.78. El ID del parche es ACSD-60989. Tenga en cuenta que este problema se solucionó en Adobe Commerce 2.4.8.

Productos y versiones afectados

El parche se ha creado para la versión de Adobe Commerce:

  • Adobe Commerce (todos los métodos de implementación) 2.4.6-p6

Compatible con versiones de Adobe Commerce:

  • Adobe Commerce (todos los métodos de implementación) >=2.4.4 <2.4.8
NOTE
El parche podría ser aplicable a otras versiones con las nuevas versiones de Quality Patches Tool. Para comprobar si el parche es compatible con su versión de Adobe Commerce, actualice el paquete magento/quality-patches a la última versión y compruebe la compatibilidad en la página Quality Patches Tool: buscar parches ​. Utilice el ID de parche como palabra clave de búsqueda para localizar el parche.

Problema

La modificación de una columna con una clave externa mediante el esquema declarativo en MariaDB produce un error debido a errores de restricción de clave externa durante la actualización de la instalación.

Pasos a seguir:

  1. Vaya a Admin > Stores > Settings > Order Status.

  2. Haga clic en Create New Status, escriba test en todos los campos y guarde.

  3. Haga clic en Assign Status to State.

    1. Establezca Order Status en prueba.
    2. Se estableció Order State en Recibido.
    3. Guarde la asignación.
  4. Cree, registre y habilite un módulo personalizado y agregue lo siguiente 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>
    
  5. Ejecute el siguiente comando:

    code language-none
    bin/magento setup:upgrade
    

Resultados esperados:

La actualización de la instalación se completa correctamente sin errores de restricción de clave externa.

Resultados reales:

Se produce un error durante la actualización de la instalación:

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'

Aplicar el parche

Para aplicar parches individuales, utilice los siguientes vínculos según el método de implementación:

Lectura relacionada

Para obtener más información sobre Quality Patches Tool, consulte:

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