메인 콘텐츠로 건너뛰기

VillageSQL is a drop-in replacement for MySQL with extensions.

All examples on this page work on VillageSQL. Install Now →
MySQL의 MAC 주소는 보통 VARCHAR(17)로 저장됩니다. 저장은 되지만 어떤 문자열이든 받아들이고, 아무것도 정규화하지 않으며, 6바이트면 충분한데 17바이트를 씁니다. VillageSQL의 MACADDR 타입은 삽입 시 형식을 검증하고, 일관된 표현으로 정규화하며, OUI 추출을 공짜로 제공합니다.

MySQL 기본: VARCHAR(17)

두 행 모두 삽입됩니다. 이제 같은 열에 같은 벤더 접두사의 두 가지 표현이 있습니다. 중복 제거 쿼리는 문자열 정규화 문제가 됩니다. 열이 실제로 유효한 MAC 주소를 담고 있다는 강제가 없습니다.

표준 우회책: BINARY(6)

간결한 저장: 삽입 시 바이너리로 변환하고, 읽을 때 문자열로 되돌립니다.
이것이 수동 재구성입니다. 동작하지만 장황하고 깨지기 쉬우며, 여전히 입력을 검증하지 않습니다.

VillageSQL과 함께: MACADDR과 MACADDR8

VillageSQL의 vsql_network_address 확장은 자동 형식 정규화와 검증을 갖춘 MACADDR(6바이트 IEEE 802 형식)과 MACADDR8(8바이트 EUI-64 형식) 타입을 추가합니다.
출력:

OUI 추출

MAC 주소의 첫 3바이트는 제조사를 식별합니다(OUI — Organizationally Unique Identifier). macaddr_trunc()는 마지막 3바이트를 0으로 만들어 OUI만 남깁니다:

비교와 정렬

EUI-64 MAC 주소(MACADDR8)

최신 하드웨어는 8바이트 EUI-64 식별자를 점점 더 많이 사용합니다. MACADDR8 타입이 이를 처리합니다:

접근법 비교

자주 묻는 질문

MACADDR은 대문자 16진수를 받아들이나요?

예 — 08:00:2B:01:02:03과 08:00:2b:01:02:03은 둘 다 올바르게 파싱되고 동일하게 저장됩니다.

MACADDR을 기본 키로 사용할 수 있나요?

예. MACADDR은 인덱싱과 동등 비교를 지원합니다. MAC이 자연스러운 식별자인 네트워크 장치 테이블에서는 합리적인 기본 키입니다.

MACADDR과 MACADDR8의 차이는 무엇인가요?

MACADDR은 대부분의 네트워크 하드웨어가 사용하는 6바이트 IEEE 802 MAC-48 형식입니다. MACADDR8은 일부 최신 네트워크 인터페이스와 IPv6 링크 로컬 주소 생성에 사용되는 8바이트 EUI-64 형식입니다. EUI-64 식별자를 저장할 때 MACADDR8을 사용하세요.

MACADDR과 MACADDR8 사이를 어떻게 변환하나요?

내장 변환 함수는 없습니다. MAC-48을 EUI-64로 확장해야 한다면(가운데에 ff:fe 삽입), macaddr8_from_string()을 호출하기 전에 애플리케이션 코드에서 하세요.

문제 해결

함께 보기