-
Notifications
You must be signed in to change notification settings - Fork 9.4k
Description
Preconditions and environment
- Magento Enterprise versions 2.4.8-p1 and 2.4.8-p2 (I haven't tested 2.4.8)
- I hit this whilst upgrading from 2.4.7-p5 using composer (require-commerce)
Steps to reproduce
- Install 2.4.7-p5 via composer to obtain a start point with the schemas
- Upgrade to 2.4.8-p1for the first example and additionally 2.4.8-p2 where things get worse
Expected result
I can run bin/magento setup:upgrade
with no errors
Actual result
"Schema creation/updates" stage throws error: Table catalog_product_entity_media_gallery_value_to_entity do not have column with name entity_id
Additional information
Magento Commerce (Enterprise) 2.4.8-p1
In vendor/magento/module-catalog/etc/db_schema.xml:1679
there is a table declaration with a constraint section that appears unrelated to this table.
The table is catalog_product_entity_media_gallery_value_to_entity
:
<table name="catalog_product_entity_media_gallery_value_to_entity" resource="default" engine="innodb"
comment="Link Media value to Product entity table">
<column xsi:type="int" name="value_id" unsigned="true" nullable="false" identity="false"
comment="Value media Entry ID"/>
<column xsi:type="int" name="entity_id" unsigned="true" nullable="false" identity="false"
comment="Product Entity ID"/>
<constraint xsi:type="foreign" referenceId="FK_A6C6C8FAA386736921D3A7C4B50B1185"
table="catalog_product_entity_media_gallery_value_to_entity" column="value_id"
referenceTable="catalog_product_entity_media_gallery" referenceColumn="value_id"
onDelete="CASCADE"/>
<constraint xsi:type="foreign" referenceId="CAT_PRD_ENTT_MDA_GLR_VAL_TO_ENTT_ENTT_ID_CAT_PRD_ENTT_ENTT_ID"
table="catalog_product_entity_media_gallery_value_to_entity" column="entity_id"
referenceTable="catalog_product_entity" referenceColumn="entity_id" onDelete="CASCADE"/>
<constraint xsi:type="primary" referenceId="CAT_PRD_ENTT_MDA_GLR_VAL_TO_ENTT_VAL_ID_ENTT_ID">
<column name="value_id"/>
<column name="entity_id"/>
</constraint>
<!-- This constraint appears unrelated to this table. Commenting it out avoids the error. -->
<constraint xsi:type="unique" referenceId="CAT_PRD_IDX_PRICE_TMP_ENTT_ID_CSTR_GROUP_ID_WS_ID">
<column name="entity_id"/>
<column name="customer_group_id"/>
<column name="website_id"/>
</constraint>
</table>
Issues with this constraint:
- Columns
customer_group_id
andwebsite_id
do not exist in this table. - Adding this constraint causes
bin/magento setup:upgrade
to fail with:Table catalog_product_entity_media_gallery_value_to_entity do not have column with name entity_id
Additionally, in vendor/magento/module-catalog-staging/etc/db_schema.xml:256
, the same table is modified to disable entity_id
and replace it with row_id
:
<table name="catalog_product_entity_media_gallery_value_to_entity" resource="default"
comment="Link Media value to Product entity table">
<!-- entity_id is disabled here -->
<column xsi:type="int" name="entity_id" disabled="true"/>
<column xsi:type="int" name="row_id" unsigned="true" nullable="false" identity="false"
onCreate="migrateDataFrom(entity_id)" comment="Version Id"/>
<constraint xsi:type="foreign" referenceId="CAT_PRD_ENTT_MDA_GLR_VAL_TO_ENTT_ENTT_ID_CAT_PRD_ENTT_ENTT_ID"
disabled="1"/>
<constraint xsi:type="foreign" referenceId="CAT_PRD_ENTT_MDA_GLR_VAL_TO_ENTT_ROW_ID_CAT_PRD_ENTT_ROW_ID"
table="catalog_product_entity_media_gallery_value_to_entity" column="row_id"
referenceTable="catalog_product_entity" referenceColumn="row_id" onDelete="CASCADE"/>
<constraint xsi:type="primary" referenceId="CAT_PRD_ENTT_MDA_GLR_VAL_TO_ENTT_VAL_ID_ENTT_ID" disabled="1"/>
<constraint xsi:type="primary" referenceId="CAT_PRD_ENTT_MDA_GLR_VAL_TO_ENTT_VAL_ID_ROW_ID">
<column name="value_id"/>
<column name="row_id"/>
</constraint>
</table>
Conflict:
module-catalog
expectsentity_id
(and defines constraints referencing it).module-catalog-staging
disablesentity_id
.- The unique constraint in
module-catalog
still referencesentity_id
along with two other non-existent columns. - This results in a schema that cannot be created.
Magento Commerce (Enterprise) 2.4.8-p2
In 2.4.8-p2, the same “extra” unique constraint appears twice in vendor/magento/module-catalog/etc/db_schema.xml:1696
:
<constraint xsi:type="unique" referenceId="CAT_PRD_IDX_PRICE_TMP_ENTT_ID_CSTR_GROUP_ID_WS_ID">
<column name="entity_id"/>
<column name="customer_group_id"/>
<column name="website_id"/>
</constraint>
<constraint xsi:type="unique" referenceId="CAT_PRD_IDX_PRICE_TMP_ENTT_ID_CSTR_GROUP_ID_WS_ID">
<column name="entity_id"/>
<column name="customer_group_id"/>
<column name="website_id"/>
</constraint>
Notes:
- The constraint is still invalid for this table.
- The fact that it appears twice may indicate over reliance on AI, a merge problem or copy-paste mishap in the XML source.
Summary
-
Both modules together define a table schema that cannot be installed:
module-catalog
requiresentity_id
.module-catalog-staging
removesentity_id
.- A unique constraint in
module-catalog
referencesentity_id
,customer_group_id
, andwebsite_id
— two of which do not exist in this table. - In 2.4.8-p2, the invalid constraint appears twice.
-
This prevents running
bin/magento setup:upgrade
successfully and blocks upgrades. -
We cannot proceed with upgrading to these versions until this conflict is resolved.
Release note
No response
Triage and priority
- Severity: S0 - Affects critical data or functionality and leaves users without workaround.
- Severity: S1 - Affects critical data or functionality and forces users to employ a workaround.
- Severity: S2 - Affects non-critical data or functionality and forces users to employ a workaround.
- Severity: S3 - Affects non-critical data or functionality and does not force users to employ a workaround.
- Severity: S4 - Affects aesthetics, professional look and feel, “quality” or “usability”.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status