VillageSQL is a drop-in replacement for MySQL with extensions.
All examples on this page work on VillageSQL. Install Now →
VARCHAR(17) として保存されています。保存はできますが、どんな文字列でも受け入れ、何も正規化せず、6 バイトで済むところに 17 バイトを使います。VillageSQL の MACADDR 型は、挿入時に形式を検証し、一貫した表現に正規化し、OUI の抽出を追加の手間なく提供します。
MySQL のデフォルト: VARCHAR(17)
標準的な回避策: 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 バイトをゼロにし、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() を呼び出す前にアプリケーションコードで行ってください。
トラブルシューティング
関連項目
- MySQL での IP アドレスの保存 — IP に対する同じネットワークアドレスの保存パターン