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
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:
-
Vaya a Admin > Stores > Settings > Order Status.
-
Haga clic en Create New Status, escriba test en todos los campos y guarde.
-
Haga clic en Assign Status to State.
- Establezca Order Status en prueba.
- Se estableció Order State en Recibido.
- Guarde la asignación.
-
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> -
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:
- Adobe Commerce o Magento Open Source local: Quality Patches Tool > Uso en la guía Quality Patches Tool.
- Adobe Commerce en la infraestructura de la nube: Actualizaciones y parches > Aplicar parches en la guía Commerce en la infraestructura de la nube.
Lectura relacionada
Para obtener más información sobre Quality Patches Tool, consulte:
- Quality Patches Tool: herramienta de autoservicio para parches de calidad en la guía Herramientas.