동일한 엔터티에 대한 데이터베이스의 여러 행
이 문서에서는 데이터베이스의 동일한 엔티티 ID에 대해 여러 행이 존재하는 문제에 대한 해결 방법을 제공합니다.
설명 description
영향을 받는 제품 및 버전
Adobe Commerce(모든 버전)
문제
데이터베이스에 동일한 엔티티 ID에 대한 행이 여러 개 있습니다.
예를 들어, 이 쿼리를 실행할 때 중복 엔티티 ID가 있는 레코드 목록을 수신한 후 다음을 수행합니다.
SELECT * FROM $entityTable WHERE $column = <$entityID> ORDER BY created_in;
범주/제품/장바구니 가격 규칙/카탈로그 가격 규칙/CMS 페이지의 $entityID = ID입니다.
원인
이는 예상되는 비헤이비어입니다. 콘텐츠 스테이징 기능으로 여러 행이 만들어집니다.
종료 날짜 없이 시작 날짜를 지정하면 엔티티/규칙/페이지 ID가 동일한 행이 두 개 이상 있습니다. 한 행은 엔티티의 원래 상태(created_in=1 )를 나타내고, 한 행은 *예약된 업데이트의 끝*을 나타냅니다.
종료 날짜가 포함된 시작 날짜를 지정하는 경우 동일한 엔티티/규칙/페이지 ID를 가진 행이 최소 3개 있습니다. 한 행은 엔티티의 원래 상태(created_in=1 )를 나타내고, 한 행은 *예약된 업데이트의 시작*을 나타내고, 한 행은 *예약된 업데이트의 끝*을 나타냅니다.
예를 들어 이 쿼리에서 다음을 수행합니다.
SELECT row_id, entity_id, created_in, updated_in FROM catalog_product_entity WHERE entity_id = 483 ORDER BY created_in;
created_in 및 updated_in 값은 다음 패턴을 따라야 합니다. 현재 행의 created_in 값은 이전 행의 updated_in 값과 같습니다. 또한 첫 번째 행에는 created_in = 1이(가) 포함되어야 하며 마지막 행에는 updated_in = 2147483647이(가) 있어야 합니다. 행이 하나만 있으면 created_in=1 및 updated_in=2147483647이(가) 표시됩니다.
같은 엔터티의 DB에 두 번째 DB 항목과 그 다음 항목이 표시되는 이유는 무엇입니까?
영향을 받는 엔터티에 대한 두 번째 DB 레코드(및 가능한 다음 레코드)는 Magento_Staging 모듈을 사용하여 콘텐츠 준비 업데이트가 예약되어 각 테이블에 엔터티에 대한 추가 레코드가 생성되었음을 나타냅니다.
created_in 또는 updated_in 열에 대해 레코드에 동일한 값이 있는 경우에만 문제가 발생합니다.
해결 방법 resolution
이는 예상되는 동작이며 행 간에 불일치가 있는 경우에만 문제가 발생합니다.
관련 읽기
지원 기술 자료에서 범주의 변경 내용이 저장되지 않음
Commerce 구현 플레이북의 데이터베이스 테이블 수정 우수 사례