마젠토(Magento) 2.4.5를 설치하고 또 POS Extension을 설치하여 테스트 중에 price index table의 reindex가 안 되는 문제가 발생하였다. 원인을 찾던 중 테스트 중인 POS Extension을 비활성화(disable)하면 reindex를 수행하더라도 에러가 발생하지 않고 정상처리된다. POS EXtension개발업체에 의뢰하니 Magento 2.4.5의 Core문제라고 Composer를 이용하여 패치를 해야 한다고 패치를 보내왔다. Composer의 역할과 해당 패치를 적용하는 과정에 대해서 알아본다.
1. Composer
Composer는 PHP 프로그래밍 언어에서 사용하는 패키지 의존성(Dependency) 관리도구입니다. 의존성은 하나의 소프트웨어 모듈이 다른 모듈의 기능을 사용하거나 혹은 다른 모듈에서 제공하는 데이터나 자료구조등을 참조할 때 발생하며, 이러한 모듈 간의 상호작용은 대규모 시스템을 구성하는 작은 모듈들이 서로 협력하여 동작하도록 만드는데 중요한 역할을 합니다. 따라서 Composer는 PHP 응용프로그램을 작성할 때 필요한 라이브러리, 프레임워크, 모듈등을 관리하고 설치하며, 각각의 패키지간의 의존성 관리를 수행할 수 있습니다. Composer사용의 장점은 응용프로그램의 코드를 보다 쉽게 관리하고, 유지보수 및 업그레이드가 간편해지는 장점이 있습니다. 사용하는 라이브러리의 의존성을 관리하고, 프로젝트에 필요한 라이브러리를 쉽게 추가할 수 있도록 도와줍니다.
2. reindex에러
마젠토의 Command로 indexer:reindex를 실행하면 "SQLSTATE [21 S01]: Insert value list does not match column list: 1136 Column count doesn't match value counter at row 1,...."라는 메시지가 나온다. 인덱스를 만드는데 인덱스테이블의 칼럼수가 서로 맞지 않는다는 의미로 해석되는 에러로 보인다.
3. Patch적용
1) 패치 파일을 다운로드하여 마젠토 홈디렉터리에 upload 하여 압축을 푼다. 그러면 '~/patches/composer/' 디렉터리에 패치파일이 생성된다.
2) cweagans/composer-patches Plug-in을 composer.json 파일에 추가한다.
$ composer require cweagans/composer-patches
3) composer.json파일을 vi 또는 nano로 편집하여 아래내용을 추가한다.
"extra": {
"magento-force": "override",
"patches": {
"magento/module-catalog": {
"fixed table difference insert during price reindex": "patches/composer/github-issue-36370.patch"
}
}
}
4) 디버깅 옵션을 추가하여 패치를 적용한다.
$ composer -v install
5) composer.lock파일 update 한다.
$ composer update --lock
4. reindex 확인
맺음말
패치적용 후 reindex가 정상처리됨을 알 수 있다. 마젠토 2.4.x 설치 후 price table의 reindex 에러 발생 시 패치 적용에 참조 바랍니다.
'관심분야' 카테고리의 다른 글
마젠토(Magento)에서 거래 Transaction을 위한 Elastic메일 설정 (0) | 2023.03.28 |
---|---|
마젠토에 POS Extension설치하기 (0) | 2023.03.22 |
구글 Gmail을 SMTP 서버로 설정하기 (1) | 2023.03.15 |
마젠토(Magento)2.4.x에서 성능향상을 위한 Redis 캐시 설정하기 (0) | 2023.03.10 |
구글 애널리틱스(GA4) 내부 IP트래픽 필터링 설정하기 (1) | 2023.03.09 |
댓글