1️⃣ 현재 SEQUENCE가 CYCLE인지 확인하는 방법
방법 1: SHOW CREATE SEQUENCE
SHOW CREATE SEQUENCE sequence_name;
출력 예:
CREATE SEQUENCE `order_seq`
START WITH 1
INCREMENT BY 1
MINVALUE 1
MAXVALUE 1000
CACHE 1000
NOCYCLE;
→ CYCLE 또는 NOCYCLE 확인
✅ 방법 2: information_schema 조회
SELECT SEQUENCE_NAME,
CYCLE_OPTION
FROM information_schema.SEQUENCES
WHERE SEQUENCE_SCHEMA = 'your_db'
AND SEQUENCE_NAME = 'sequence_name';
결과:
SEQUENCE_NAMECYCLE_OPTION
| order_seq | YES / NO |
- YES → CYCLE
- NO → NOCYCLE
MariaDB 10.3 이상에서 SEQUENCE 지원
2️⃣ 기존 SEQUENCE를 CYCLE로 변경하는 방법
MariaDB는 ALTER SEQUENCE 지원합니다.
✅ CYCLE로 변경
ALTER SEQUENCE sequence_name
CYCLE;
✅ NOCYCLE로 변경
ALTER SEQUENCE sequence_name
NOCYCLE;
3️⃣ 예제 전체 흐름
현재 상태 확인
SHOW CREATE SEQUENCE order_seq;
CYCLE 적용
ALTER SEQUENCE order_seq CYCLE;
다시 확인
SHOW CREATE SEQUENCE order_seq;
4️⃣ CYCLE 동작 방식 설명
예:
CREATE SEQUENCE test_seq
START WITH 1
INCREMENT BY 1
MINVALUE 1
MAXVALUE 3
CYCLE;
실행 결과:
1 → 2 → 3 → 1 → 2 → 3 ...
CYCLE이 없으면:
1 → 2 → 3 → ERROR (MAXVALUE 초과)
5️⃣ 주의사항 (실무 중요)
- MAXVALUE / MINVALUE 범위 반드시 확인
- AUTO_INCREMENT 대체용으로 쓰는 경우 CYCLE 사용 시 PK 충돌 가능
- 운영 DB에서 변경 전 반드시 현재 MAX 사용값 확인
SELECT NEXTVAL(sequence_name);
6️⃣ 버전 확인
SELECT VERSION();
SEQUENCE는 MariaDB 10.3 이상에서 지원됩니다.
MariaDB 10.6.7인데
Unknown table 'sequences' in information_schema
오류가 발생했다면, 이것은 해당 객체가 "진짜 SEQUENCE 객체"가 아니라 sequence 엔진 기반 테이블일 가능성이 매우 높습니다.
MariaDB는 두 가지 방식이 있습니다:
1️⃣ ANSI SQL SEQUENCE 객체 (CREATE SEQUENCE)
2️⃣ SEQUENCE storage engine 테이블 (ENGINE=SEQUENCE)
두 방식은 완전히 다릅니다.
🔎 1️⃣ 먼저 진짜 SEQUENCE인지 확인
SHOW FULL TABLES WHERE Table_type = 'SEQUENCE';
또는
SHOW CREATE TABLE your_sequence_name;
결과가 아래처럼 나오면 👇
ENGINE=SEQUENCE
→ 이건 SEQUENCE 엔진 테이블입니다.
→ information_schema.SEQUENCES에 나오지 않습니다.
🔎 2️⃣ ANSI SEQUENCE 객체인지 확인
SHOW CREATE SEQUENCE your_sequence_name;
이 명령이 실패하면 → ANSI SEQUENCE가 아닙니다.
🎯 왜 information_schema.SEQUENCES가 없을까?
MariaDB 10.6에서도:
- information_schema.SEQUENCES는 ANSI SEQUENCE 객체가 있을 때만 존재
- 단순히 SEQUENCE 엔진 테이블만 있으면 생성되지 않음
확인:
SHOW TABLES FROM information_schema LIKE 'SEQUENCE%';
🧠 가장 가능성 높은 상황
대부분 실무 10.x 환경에서는 아래 방식으로 생성했을 가능성이 큼:
CREATE TABLE order_seq
ENGINE=SEQUENCE;
이 경우:
- CYCLE 개념 없음
- ALTER SEQUENCE 문법 사용 불가
- 옵션은 CREATE 시에만 설정 가능
📌 SEQUENCE 엔진에서 CYCLE 여부 확인 방법
SHOW CREATE TABLE order_seq;
출력 예:
CREATE TABLE `order_seq` (
`next_not_cached_value` bigint(21) NOT NULL,
...
) ENGINE=SEQUENCE
START WITH 1
INCREMENT BY 1
MINVALUE 1
MAXVALUE 1000
CACHE 1000
CYCLE;
여기서 CYCLE / NOCYCLE 확인
🔧 CYCLE로 변경하는 방법 (SEQUENCE 엔진인 경우)
SEQUENCE 엔진은 ALTER로 CYCLE 변경 불가
→ 반드시 DROP 후 재생성 필요
절차
-- 1. 현재 값 백업
SELECT NEXTVAL(order_seq);
-- 2. DROP
DROP TABLE order_seq;
-- 3. 재생성
CREATE TABLE order_seq
ENGINE=SEQUENCE
START WITH 1000
INCREMENT BY 1
MINVALUE 1
MAXVALUE 999999
CYCLE;
⚠ 운영 환경에서는 반드시 현재 값 기준으로 START WITH 설정
🏁 정리
구분ANSI SEQUENCEENGINE=SEQUENCE
| SHOW CREATE SEQUENCE | O | X |
| information_schema.SEQUENCES | O | X |
| ALTER SEQUENCE CYCLE | O | X |
| DROP 없이 변경 | O | X |
📌 지금 환경에서 정확히 진단하는 방법
아래 두 개 실행 결과를 알려주시면 정확히 분석해 드리겠습니다:
SHOW CREATE TABLE your_sequence_name;
SHOW FULL TABLES WHERE Table_type='SEQUENCE';
현재 상황은 거의 90% 확률로 ENGINE=SEQUENCE 방식입니다.
'교육' 카테고리의 다른 글
| Windows 11 + VS Code에서 Cursor처럼 쓰는 로컬 개발자 AI 설치 가이드 (1) | 2026.02.04 |
|---|---|
| React : Cannot find type definition file for 'minimatch'. 오류 (0) | 2026.01.20 |
| mariadb에서 datetime 유형의 0시 이후 조회 예제 (0) | 2026.01.20 |
| node v14.17.0 설치 URL (0) | 2026.01.19 |
| MinIO + Apache Iceberg + Trino 기반 Data Lake 구축 종합 가이드 (0) | 2026.01.15 |