원인 확인 단계
터미널에서 다음 명령을 실행하여 기본 키의 가장 높은 값을 확인합니다. SELECT MAX(value_id) FROM catalog_product_entity_int;
max(value_id)
이(가) max int(11) [ 4294967296 ]
보다 낮고 [ AUTO_INCREMENT ]
의 값이 max int(11) [ 4294967296 ]
보다 크거나 같은 경우 테이블에서 다음 값으로 [ AUTO_INCREMENT ]
을(를) 업데이트하는 것이 좋습니다. 그렇지 않으면 INT
에서 BIGINT
스키마 업데이트를 고려하십시오.
테이블에서 다음 값으로 AUTO_INCREMENT
업데이트
테이블을 변경하기 전에 데이터베이스 백업을 수행합니다. 또한 사이트를 유지 관리 모드로 전환하세요. 또한 변경한 후 데이터베이스 테이블(변경된 테이블만)에서 MySQL optimize 명령을 실행하는 것이 좋습니다.
특정 테이블에서 최적화 명령을 실행하는 동안 사이트는 유지 관리 모드에 있어야 합니다. 이렇게 하면 테이블이 완전히 다시 빌드되고 테이블에서 데이터를 삭제한 후 공간이 확보됩니다.
아래 예제 터미널 출력에 표시된 대로 표시된 값이 max int(11) [ 4294967296 ]
보다 낮은 경우 [ AUTO_INCREMENT ]
테이블이 max [ int(11) ]
값보다 크거나 같은 숫자로 변경되었습니다.
MariaDB [xxx]> SELECT MAX(value_id) FROM catalog_product_entity_int;
+---------------------+
| MAX(source_item_id) |
+---------------------+
| 4283174130 |
+---------------------+
이 오류가 발생했는지 확인하려면 터미널에서 다음 명령을 실행합니다.
MariaDB [xxx]> show create table catalog_product_entity_int;
...
) ENGINE=InnoDB AUTO_INCREMENT=4294967297 DEFAULT CHARSET=utf8 COMMENT='Catalog Product Integer Attribute Backend Table';
위의 예에서 보듯이 테이블 [ AUTO_INCREMENT ]
이(가) max int(11) [ 4294967296 ]
보다 큰 숫자로 변경되었습니다. 해결 방법은 테이블에서 다음 값으로 [ AUTO_INCREMENT]
을(를) 업데이트하는 것입니다.
ALTER TABLE catalog_product_entity_int AUTO_INCREMENT = 4283174131;