ACSD-60989: a modificação de uma coluna com uma chave estrangeira por meio de um esquema declarativo causa erros em MariaDB
O patch ACSD-60989 corrige o problema em que a modificação de uma coluna com uma chave estrangeira por meio de esquema declarativo em MariaDB causa erros de atualização de configuração devido a restrições de chave estrangeira. Este patch está disponível quando o Quality Patches Tool (QPT) 1.1.78 está instalado. A ID do patch é ACSD-60989. Observe que esse problema foi corrigido no Adobe Commerce 2.4.8.
Produtos e versões afetados
O patch foi criado para a versão do Adobe Commerce:
- Adobe Commerce (todos os métodos de implantação) 2.4.6-p6
Compatível com as versões do Adobe Commerce:
- Adobe Commerce (todos os métodos de implantação) >=2.4.4 <2.4.8
magento/quality-patches para a versão mais recente e verifique a compatibilidade na Quality Patches Tool: página Procurar patches. Use a ID do patch como palavra-chave de pesquisa para localizar o patch.Problema
Falha ao modificar uma coluna com uma chave estrangeira por meio do esquema declarativo em MariaDB devido a erros de restrição de chave estrangeira durante a atualização da instalação.
Etapas a serem reproduzidas:
-
Vá para Admin > Stores > Settings > Order Status.
-
Clique em Create New Status, digite test em todos os campos e salve.
-
Clique em Assign Status to State.
- Defina Order Status como teste.
- Defina Order State como Recebido.
- Salve a atribuição.
-
Crie, registre e habilite um módulo personalizado e adicione o seguinte 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> -
Execute o seguinte comando:
code language-none bin/magento setup:upgrade
Resultados esperados:
A atualização da instalação é concluída com êxito sem erros de restrição de chave estrangeira.
Resultados reais:
Ocorre um erro durante a atualização da instalação:
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 o patch
Para aplicar patches individuais, use os links a seguir, dependendo do método de implantação:
- Adobe Commerce ou Magento Open Source local: Quality Patches Tool > Uso no guia Quality Patches Tool.
- Adobe Commerce na infraestrutura em nuvem: Atualizações e patches > Aplicar patches no guia do Commerce na infraestrutura em nuvem.
Leitura relacionada
Para saber mais sobre Quality Patches Tool, consulte:
- Quality Patches Tool: uma ferramenta de autoatendimento para patches de qualidade no guia Ferramentas.